Skip to content

Commit

Permalink
selftests/powerpc: Fix pkey syscall redefinitions
Browse files Browse the repository at this point in the history
On distros using older glibc versions, the pkey tests encounter build
failures due to redefinition of the pkey syscall numbers.

For compatibility, commit 743f354 added a wrapper for the
gettid() syscall and included syscall.h if the version of glibc used
is older than 2.30. This leads to different definitions of SYS_pkey_*
as the ones in the pkey test header set numeric constants where as the
ones from syscall.h reuse __NR_pkey_*. The compiler complains about
redefinitions since they are different.

This replaces SYS_pkey_* definitions with __NR_pkey_* such that the
definitions in both syscall.h and pkeys.h are alike. This way, if
syscall.h has to be included for compatibility reasons, builds will
still succeed.

Fixes: 743f354 ("selftests/powerpc: Add wrapper for gettid")
Reported-by: Sachin Sant <sachinp@linux.vnet.ibm.com>
Suggested-by: David Laight <david.laight@aculab.com>
Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/a4956d838bf59b0a71a2553c5ca81131ea8b49b9.1596561758.git.sandipan@linux.ibm.com
  • Loading branch information
sandip4n authored and mpe committed Aug 5, 2020
1 parent 0c83b27 commit a7aaa2f
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions tools/testing/selftests/powerpc/include/pkeys.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@

#define SI_PKEY_OFFSET 0x20

#define SYS_pkey_mprotect 386
#define SYS_pkey_alloc 384
#define SYS_pkey_free 385
#define __NR_pkey_mprotect 386
#define __NR_pkey_alloc 384
#define __NR_pkey_free 385

#define PKEY_BITS_PER_PKEY 2
#define NR_PKEYS 32
Expand Down Expand Up @@ -62,17 +62,17 @@ void pkey_set_rights(int pkey, unsigned long rights)

int sys_pkey_mprotect(void *addr, size_t len, int prot, int pkey)
{
return syscall(SYS_pkey_mprotect, addr, len, prot, pkey);
return syscall(__NR_pkey_mprotect, addr, len, prot, pkey);
}

int sys_pkey_alloc(unsigned long flags, unsigned long rights)
{
return syscall(SYS_pkey_alloc, flags, rights);
return syscall(__NR_pkey_alloc, flags, rights);
}

int sys_pkey_free(int pkey)
{
return syscall(SYS_pkey_free, pkey);
return syscall(__NR_pkey_free, pkey);
}

int pkeys_unsupported(void)
Expand Down

0 comments on commit a7aaa2f

Please sign in to comment.