Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/powerpc: Fix pkey syscall redefinitions

On distros using older glibc versions, the pkey tests encounter build
failures due to redefinition of the pkey syscall numbers.

For compatibility, commit 743f3544fffb 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: 743f3544fffb ("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

authored by

Sandipan Das and committed by
Michael Ellerman
a7aaa2f2 0c83b277

+6 -6
+6 -6
tools/testing/selftests/powerpc/include/pkeys.h
··· 31 31 32 32 #define SI_PKEY_OFFSET 0x20 33 33 34 - #define SYS_pkey_mprotect 386 35 - #define SYS_pkey_alloc 384 36 - #define SYS_pkey_free 385 34 + #define __NR_pkey_mprotect 386 35 + #define __NR_pkey_alloc 384 36 + #define __NR_pkey_free 385 37 37 38 38 #define PKEY_BITS_PER_PKEY 2 39 39 #define NR_PKEYS 32 ··· 62 62 63 63 int sys_pkey_mprotect(void *addr, size_t len, int prot, int pkey) 64 64 { 65 - return syscall(SYS_pkey_mprotect, addr, len, prot, pkey); 65 + return syscall(__NR_pkey_mprotect, addr, len, prot, pkey); 66 66 } 67 67 68 68 int sys_pkey_alloc(unsigned long flags, unsigned long rights) 69 69 { 70 - return syscall(SYS_pkey_alloc, flags, rights); 70 + return syscall(__NR_pkey_alloc, flags, rights); 71 71 } 72 72 73 73 int sys_pkey_free(int pkey) 74 74 { 75 - return syscall(SYS_pkey_free, pkey); 75 + return syscall(__NR_pkey_free, pkey); 76 76 } 77 77 78 78 int pkeys_unsupported(void)