Message ID | 20190110162435.309262-16-arnd@arndb.de (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | arch: synchronize syscall tables in preparation for y2038 | expand |
On Thu, Jan 10, 2019 at 05:24:35PM +0100, Arnd Bergmann wrote: > Most architectures define system call numbers for the rseq and pkey system > calls, even when they don't support the features, and perhaps never will. > > Only a few architectures are missing these, so just define them anyway > for consistency. If we decide to add them later to one of these, the > system call numbers won't get out of sync then. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h > index a1fbf15d53aa..ed08f114ee91 100644 > --- a/arch/s390/include/asm/unistd.h > +++ b/arch/s390/include/asm/unistd.h > @@ -11,9 +11,6 @@ > #include <asm/unistd_nr.h> > > #define __IGNORE_time > -#define __IGNORE_pkey_mprotect > -#define __IGNORE_pkey_alloc > -#define __IGNORE_pkey_free > > #define __ARCH_WANT_NEW_STAT > #define __ARCH_WANT_OLD_READDIR > diff --git a/arch/s390/kernel/syscalls/syscall.tbl b/arch/s390/kernel/syscalls/syscall.tbl > index 428cf512a757..f84ea364a302 100644 > --- a/arch/s390/kernel/syscalls/syscall.tbl > +++ b/arch/s390/kernel/syscalls/syscall.tbl > @@ -391,6 +391,9 @@ > 381 common kexec_file_load sys_kexec_file_load compat_sys_kexec_file_load > 382 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents > 383 common rseq sys_rseq compat_sys_rseq > +384 common pkey_alloc sys_pkey_alloc sys_pkey_alloc > +385 common pkey_free sys_pkey_free sys_pkey_free > +386 common pkey_mprotect sys_pkey_mprotect sys_pkey_mprotect Since you only need/want the system call numbers, could you please change these lines to: > +384 common pkey_alloc - - > +385 common pkey_free - - > +386 common pkey_mprotect - - Otherwise it _looks_ like we would need compat wrappers here as well, even though all of them would just jump to sys_ni_syscall() in this case. Making this explicit seems to better.
On Thu, Jan 10, 2019 at 9:36 PM Heiko Carstens <heiko.carstens@de.ibm.com> wrote: > On Thu, Jan 10, 2019 at 05:24:35PM +0100, Arnd Bergmann wrote: > Since you only need/want the system call numbers, could you please > change these lines to: > > > +384 common pkey_alloc - - > > +385 common pkey_free - - > > +386 common pkey_mprotect - - > > Otherwise it _looks_ like we would need compat wrappers here as well, > even though all of them would just jump to sys_ni_syscall() in this > case. Making this explicit seems to better. Ok, fair enough. I considered doing this originally and then decided against it for consistency with the asm-generic file, but I don't care much either way. Is this something you may want to add later? I'm not sure exactly how pkey compares to s390 storage keys, or if this is something completely unrelated. Arnd
On Fri, Jan 11, 2019 at 06:30:43PM +0100, Arnd Bergmann wrote: > On Thu, Jan 10, 2019 at 9:36 PM Heiko Carstens > <heiko.carstens@de.ibm.com> wrote: > > On Thu, Jan 10, 2019 at 05:24:35PM +0100, Arnd Bergmann wrote: > > > Since you only need/want the system call numbers, could you please > > change these lines to: > > > > > +384 common pkey_alloc - - > > > +385 common pkey_free - - > > > +386 common pkey_mprotect - - > > > > Otherwise it _looks_ like we would need compat wrappers here as well, > > even though all of them would just jump to sys_ni_syscall() in this > > case. Making this explicit seems to better. > > Ok, fair enough. I considered doing this originally and then > decided against it for consistency with the asm-generic file, > but I don't care much either way. > > Is this something you may want to add later? I'm not sure exactly > how pkey compares to s390 storage keys, or if this is something > completely unrelated. I don't think pkeys will ever work on s390, since they require a key per mapping, while the s390 storage keys are per physical page.
On Thu, Jan 10, 2019 at 05:24:35PM +0100, Arnd Bergmann wrote: > Most architectures define system call numbers for the rseq and pkey system > calls, even when they don't support the features, and perhaps never will. > > Only a few architectures are missing these, so just define them anyway > for consistency. If we decide to add them later to one of these, the > system call numbers won't get out of sync then. I was lambasted for adding the pkey syscalls for 32-bit ARM in 2016, which will probably never support it. Why has the attitude towards this kind of thing now apparently become acceptable? > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > arch/alpha/include/asm/unistd.h | 4 ---- > arch/alpha/kernel/syscalls/syscall.tbl | 4 ++++ > arch/ia64/kernel/syscalls/syscall.tbl | 4 ++++ > arch/m68k/kernel/syscalls/syscall.tbl | 4 ++++ > arch/parisc/include/asm/unistd.h | 3 --- > arch/parisc/kernel/syscalls/syscall.tbl | 4 ++++ > arch/s390/include/asm/unistd.h | 3 --- > arch/s390/kernel/syscalls/syscall.tbl | 3 +++ > arch/sh/kernel/syscalls/syscall.tbl | 4 ++++ > arch/sparc/include/asm/unistd.h | 5 ----- > arch/sparc/kernel/syscalls/syscall.tbl | 4 ++++ > arch/xtensa/kernel/syscalls/syscall.tbl | 1 + > 12 files changed, 28 insertions(+), 15 deletions(-) > > diff --git a/arch/alpha/include/asm/unistd.h b/arch/alpha/include/asm/unistd.h > index 564ba87bdc38..31ad350b58a0 100644 > --- a/arch/alpha/include/asm/unistd.h > +++ b/arch/alpha/include/asm/unistd.h > @@ -29,9 +29,5 @@ > #define __IGNORE_getppid > #define __IGNORE_getuid > > -/* Alpha doesn't have protection keys. */ > -#define __IGNORE_pkey_mprotect > -#define __IGNORE_pkey_alloc > -#define __IGNORE_pkey_free > > #endif /* _ALPHA_UNISTD_H */ > diff --git a/arch/alpha/kernel/syscalls/syscall.tbl b/arch/alpha/kernel/syscalls/syscall.tbl > index b0e247287908..25b4a7e76943 100644 > --- a/arch/alpha/kernel/syscalls/syscall.tbl > +++ b/arch/alpha/kernel/syscalls/syscall.tbl > @@ -452,3 +452,7 @@ > 521 common pwritev2 sys_pwritev2 > 522 common statx sys_statx > 523 common io_pgetevents sys_io_pgetevents > +524 common pkey_alloc sys_pkey_alloc > +525 common pkey_free sys_pkey_free > +526 common pkey_mprotect sys_pkey_mprotect > +527 common rseq sys_rseq > diff --git a/arch/ia64/kernel/syscalls/syscall.tbl b/arch/ia64/kernel/syscalls/syscall.tbl > index 2e93dbdcdb80..84e03de00177 100644 > --- a/arch/ia64/kernel/syscalls/syscall.tbl > +++ b/arch/ia64/kernel/syscalls/syscall.tbl > @@ -339,3 +339,7 @@ > 327 common io_pgetevents sys_io_pgetevents > 328 common perf_event_open sys_perf_event_open > 329 common seccomp sys_seccomp > +330 common pkey_alloc sys_pkey_alloc > +331 common pkey_free sys_pkey_free > +332 common pkey_mprotect sys_pkey_mprotect > +333 common rseq sys_rseq > diff --git a/arch/m68k/kernel/syscalls/syscall.tbl b/arch/m68k/kernel/syscalls/syscall.tbl > index 5354ba02eed2..ae88b85d068e 100644 > --- a/arch/m68k/kernel/syscalls/syscall.tbl > +++ b/arch/m68k/kernel/syscalls/syscall.tbl > @@ -388,6 +388,10 @@ > 378 common pwritev2 sys_pwritev2 > 379 common statx sys_statx > 380 common seccomp sys_seccomp > +381 common pkey_alloc sys_pkey_alloc > +382 common pkey_free sys_pkey_free > +383 common pkey_mprotect sys_pkey_mprotect > +384 common rseq sys_rseq > # room for arch specific calls > 393 common semget sys_semget > 394 common semctl sys_semctl > diff --git a/arch/parisc/include/asm/unistd.h b/arch/parisc/include/asm/unistd.h > index c2c2afb28941..9ec1026af877 100644 > --- a/arch/parisc/include/asm/unistd.h > +++ b/arch/parisc/include/asm/unistd.h > @@ -12,9 +12,6 @@ > > #define __IGNORE_select /* newselect */ > #define __IGNORE_fadvise64 /* fadvise64_64 */ > -#define __IGNORE_pkey_mprotect > -#define __IGNORE_pkey_alloc > -#define __IGNORE_pkey_free > > #ifndef ASM_LINE_SEP > # define ASM_LINE_SEP ; > diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl > index 9bbd2f9f56c8..e07231de3597 100644 > --- a/arch/parisc/kernel/syscalls/syscall.tbl > +++ b/arch/parisc/kernel/syscalls/syscall.tbl > @@ -367,3 +367,7 @@ > 348 common pwritev2 sys_pwritev2 compat_sys_pwritev2 > 349 common statx sys_statx > 350 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents > +351 common pkey_alloc sys_pkey_alloc > +352 common pkey_free sys_pkey_free > +353 common pkey_mprotect sys_pkey_mprotect > +354 common rseq sys_rseq > diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h > index a1fbf15d53aa..ed08f114ee91 100644 > --- a/arch/s390/include/asm/unistd.h > +++ b/arch/s390/include/asm/unistd.h > @@ -11,9 +11,6 @@ > #include <asm/unistd_nr.h> > > #define __IGNORE_time > -#define __IGNORE_pkey_mprotect > -#define __IGNORE_pkey_alloc > -#define __IGNORE_pkey_free > > #define __ARCH_WANT_NEW_STAT > #define __ARCH_WANT_OLD_READDIR > diff --git a/arch/s390/kernel/syscalls/syscall.tbl b/arch/s390/kernel/syscalls/syscall.tbl > index 428cf512a757..f84ea364a302 100644 > --- a/arch/s390/kernel/syscalls/syscall.tbl > +++ b/arch/s390/kernel/syscalls/syscall.tbl > @@ -391,6 +391,9 @@ > 381 common kexec_file_load sys_kexec_file_load compat_sys_kexec_file_load > 382 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents > 383 common rseq sys_rseq compat_sys_rseq > +384 common pkey_alloc sys_pkey_alloc sys_pkey_alloc > +385 common pkey_free sys_pkey_free sys_pkey_free > +386 common pkey_mprotect sys_pkey_mprotect sys_pkey_mprotect > # room for arch specific syscalls > 392 64 semtimedop sys_semtimedop - > 393 common semget sys_semget sys_semget > diff --git a/arch/sh/kernel/syscalls/syscall.tbl b/arch/sh/kernel/syscalls/syscall.tbl > index 6d0b84e3ef2d..3f96ad0424e1 100644 > --- a/arch/sh/kernel/syscalls/syscall.tbl > +++ b/arch/sh/kernel/syscalls/syscall.tbl > @@ -391,6 +391,10 @@ > 381 common preadv2 sys_preadv2 > 382 common pwritev2 sys_pwritev2 > 383 common statx sys_statx > +384 common pkey_alloc sys_pkey_alloc > +385 common pkey_free sys_pkey_free > +386 common pkey_mprotect sys_pkey_mprotect > +387 common rseq sys_rseq > # room for arch specific syscalls > 393 common semget sys_semget > 394 common semctl sys_semctl > diff --git a/arch/sparc/include/asm/unistd.h b/arch/sparc/include/asm/unistd.h > index 5194d86ef72d..08696ea5dca8 100644 > --- a/arch/sparc/include/asm/unistd.h > +++ b/arch/sparc/include/asm/unistd.h > @@ -59,9 +59,4 @@ > #define __IGNORE_getresgid > #endif > > -/* Sparc doesn't have protection keys. */ > -#define __IGNORE_pkey_mprotect > -#define __IGNORE_pkey_alloc > -#define __IGNORE_pkey_free > - > #endif /* _SPARC_UNISTD_H */ > diff --git a/arch/sparc/kernel/syscalls/syscall.tbl b/arch/sparc/kernel/syscalls/syscall.tbl > index 8c9580302422..24ebef675184 100644 > --- a/arch/sparc/kernel/syscalls/syscall.tbl > +++ b/arch/sparc/kernel/syscalls/syscall.tbl > @@ -407,6 +407,10 @@ > 359 common pwritev2 sys_pwritev2 compat_sys_pwritev2 > 360 common statx sys_statx > 361 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents > +362 common pkey_alloc sys_pkey_alloc > +363 common pkey_free sys_pkey_free > +364 common pkey_mprotect sys_pkey_mprotect > +365 common rseq sys_rseq > # room for arch specific syscalls > 392 64 semtimedop sys_semtimedop > 393 common semget sys_semget > diff --git a/arch/xtensa/kernel/syscalls/syscall.tbl b/arch/xtensa/kernel/syscalls/syscall.tbl > index f8befa11b0c4..c699e014e0dd 100644 > --- a/arch/xtensa/kernel/syscalls/syscall.tbl > +++ b/arch/xtensa/kernel/syscalls/syscall.tbl > @@ -372,3 +372,4 @@ > 349 common pkey_alloc sys_pkey_alloc > 350 common pkey_free sys_pkey_free > 351 common statx sys_statx > +352 common rseq sys_rseq > -- > 2.20.0 > >
On Tue, Jan 15, 2019 at 12:52 PM Russell King - ARM Linux admin <linux@armlinux.org.uk> wrote: > > On Thu, Jan 10, 2019 at 05:24:35PM +0100, Arnd Bergmann wrote: > > Most architectures define system call numbers for the rseq and pkey system > > calls, even when they don't support the features, and perhaps never will. > > > > Only a few architectures are missing these, so just define them anyway > > for consistency. If we decide to add them later to one of these, the > > system call numbers won't get out of sync then. > > I was lambasted for adding the pkey syscalls for 32-bit ARM in 2016, > which will probably never support it. Why has the attitude towards > this kind of thing now apparently become acceptable? I was (and still am) a bit unsure about this one. A number of architectures added the numbers that won't ever support them, but I wasn't sure if any of those that didn't add them might need it later. I tried to just go by the rule that anything that we list in asm-generic/unistd.h is probably important enough that we want to list it everywhere, even if that includes a couple that we end up being rather architecture specific. I'm happy to drop this patch if you or others feel that we're better off without it though. Arnd
diff --git a/arch/alpha/include/asm/unistd.h b/arch/alpha/include/asm/unistd.h index 564ba87bdc38..31ad350b58a0 100644 --- a/arch/alpha/include/asm/unistd.h +++ b/arch/alpha/include/asm/unistd.h @@ -29,9 +29,5 @@ #define __IGNORE_getppid #define __IGNORE_getuid -/* Alpha doesn't have protection keys. */ -#define __IGNORE_pkey_mprotect -#define __IGNORE_pkey_alloc -#define __IGNORE_pkey_free #endif /* _ALPHA_UNISTD_H */ diff --git a/arch/alpha/kernel/syscalls/syscall.tbl b/arch/alpha/kernel/syscalls/syscall.tbl index b0e247287908..25b4a7e76943 100644 --- a/arch/alpha/kernel/syscalls/syscall.tbl +++ b/arch/alpha/kernel/syscalls/syscall.tbl @@ -452,3 +452,7 @@ 521 common pwritev2 sys_pwritev2 522 common statx sys_statx 523 common io_pgetevents sys_io_pgetevents +524 common pkey_alloc sys_pkey_alloc +525 common pkey_free sys_pkey_free +526 common pkey_mprotect sys_pkey_mprotect +527 common rseq sys_rseq diff --git a/arch/ia64/kernel/syscalls/syscall.tbl b/arch/ia64/kernel/syscalls/syscall.tbl index 2e93dbdcdb80..84e03de00177 100644 --- a/arch/ia64/kernel/syscalls/syscall.tbl +++ b/arch/ia64/kernel/syscalls/syscall.tbl @@ -339,3 +339,7 @@ 327 common io_pgetevents sys_io_pgetevents 328 common perf_event_open sys_perf_event_open 329 common seccomp sys_seccomp +330 common pkey_alloc sys_pkey_alloc +331 common pkey_free sys_pkey_free +332 common pkey_mprotect sys_pkey_mprotect +333 common rseq sys_rseq diff --git a/arch/m68k/kernel/syscalls/syscall.tbl b/arch/m68k/kernel/syscalls/syscall.tbl index 5354ba02eed2..ae88b85d068e 100644 --- a/arch/m68k/kernel/syscalls/syscall.tbl +++ b/arch/m68k/kernel/syscalls/syscall.tbl @@ -388,6 +388,10 @@ 378 common pwritev2 sys_pwritev2 379 common statx sys_statx 380 common seccomp sys_seccomp +381 common pkey_alloc sys_pkey_alloc +382 common pkey_free sys_pkey_free +383 common pkey_mprotect sys_pkey_mprotect +384 common rseq sys_rseq # room for arch specific calls 393 common semget sys_semget 394 common semctl sys_semctl diff --git a/arch/parisc/include/asm/unistd.h b/arch/parisc/include/asm/unistd.h index c2c2afb28941..9ec1026af877 100644 --- a/arch/parisc/include/asm/unistd.h +++ b/arch/parisc/include/asm/unistd.h @@ -12,9 +12,6 @@ #define __IGNORE_select /* newselect */ #define __IGNORE_fadvise64 /* fadvise64_64 */ -#define __IGNORE_pkey_mprotect -#define __IGNORE_pkey_alloc -#define __IGNORE_pkey_free #ifndef ASM_LINE_SEP # define ASM_LINE_SEP ; diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl index 9bbd2f9f56c8..e07231de3597 100644 --- a/arch/parisc/kernel/syscalls/syscall.tbl +++ b/arch/parisc/kernel/syscalls/syscall.tbl @@ -367,3 +367,7 @@ 348 common pwritev2 sys_pwritev2 compat_sys_pwritev2 349 common statx sys_statx 350 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents +351 common pkey_alloc sys_pkey_alloc +352 common pkey_free sys_pkey_free +353 common pkey_mprotect sys_pkey_mprotect +354 common rseq sys_rseq diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h index a1fbf15d53aa..ed08f114ee91 100644 --- a/arch/s390/include/asm/unistd.h +++ b/arch/s390/include/asm/unistd.h @@ -11,9 +11,6 @@ #include <asm/unistd_nr.h> #define __IGNORE_time -#define __IGNORE_pkey_mprotect -#define __IGNORE_pkey_alloc -#define __IGNORE_pkey_free #define __ARCH_WANT_NEW_STAT #define __ARCH_WANT_OLD_READDIR diff --git a/arch/s390/kernel/syscalls/syscall.tbl b/arch/s390/kernel/syscalls/syscall.tbl index 428cf512a757..f84ea364a302 100644 --- a/arch/s390/kernel/syscalls/syscall.tbl +++ b/arch/s390/kernel/syscalls/syscall.tbl @@ -391,6 +391,9 @@ 381 common kexec_file_load sys_kexec_file_load compat_sys_kexec_file_load 382 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents 383 common rseq sys_rseq compat_sys_rseq +384 common pkey_alloc sys_pkey_alloc sys_pkey_alloc +385 common pkey_free sys_pkey_free sys_pkey_free +386 common pkey_mprotect sys_pkey_mprotect sys_pkey_mprotect # room for arch specific syscalls 392 64 semtimedop sys_semtimedop - 393 common semget sys_semget sys_semget diff --git a/arch/sh/kernel/syscalls/syscall.tbl b/arch/sh/kernel/syscalls/syscall.tbl index 6d0b84e3ef2d..3f96ad0424e1 100644 --- a/arch/sh/kernel/syscalls/syscall.tbl +++ b/arch/sh/kernel/syscalls/syscall.tbl @@ -391,6 +391,10 @@ 381 common preadv2 sys_preadv2 382 common pwritev2 sys_pwritev2 383 common statx sys_statx +384 common pkey_alloc sys_pkey_alloc +385 common pkey_free sys_pkey_free +386 common pkey_mprotect sys_pkey_mprotect +387 common rseq sys_rseq # room for arch specific syscalls 393 common semget sys_semget 394 common semctl sys_semctl diff --git a/arch/sparc/include/asm/unistd.h b/arch/sparc/include/asm/unistd.h index 5194d86ef72d..08696ea5dca8 100644 --- a/arch/sparc/include/asm/unistd.h +++ b/arch/sparc/include/asm/unistd.h @@ -59,9 +59,4 @@ #define __IGNORE_getresgid #endif -/* Sparc doesn't have protection keys. */ -#define __IGNORE_pkey_mprotect -#define __IGNORE_pkey_alloc -#define __IGNORE_pkey_free - #endif /* _SPARC_UNISTD_H */ diff --git a/arch/sparc/kernel/syscalls/syscall.tbl b/arch/sparc/kernel/syscalls/syscall.tbl index 8c9580302422..24ebef675184 100644 --- a/arch/sparc/kernel/syscalls/syscall.tbl +++ b/arch/sparc/kernel/syscalls/syscall.tbl @@ -407,6 +407,10 @@ 359 common pwritev2 sys_pwritev2 compat_sys_pwritev2 360 common statx sys_statx 361 common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents +362 common pkey_alloc sys_pkey_alloc +363 common pkey_free sys_pkey_free +364 common pkey_mprotect sys_pkey_mprotect +365 common rseq sys_rseq # room for arch specific syscalls 392 64 semtimedop sys_semtimedop 393 common semget sys_semget diff --git a/arch/xtensa/kernel/syscalls/syscall.tbl b/arch/xtensa/kernel/syscalls/syscall.tbl index f8befa11b0c4..c699e014e0dd 100644 --- a/arch/xtensa/kernel/syscalls/syscall.tbl +++ b/arch/xtensa/kernel/syscalls/syscall.tbl @@ -372,3 +372,4 @@ 349 common pkey_alloc sys_pkey_alloc 350 common pkey_free sys_pkey_free 351 common statx sys_statx +352 common rseq sys_rseq
Most architectures define system call numbers for the rseq and pkey system calls, even when they don't support the features, and perhaps never will. Only a few architectures are missing these, so just define them anyway for consistency. If we decide to add them later to one of these, the system call numbers won't get out of sync then. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- arch/alpha/include/asm/unistd.h | 4 ---- arch/alpha/kernel/syscalls/syscall.tbl | 4 ++++ arch/ia64/kernel/syscalls/syscall.tbl | 4 ++++ arch/m68k/kernel/syscalls/syscall.tbl | 4 ++++ arch/parisc/include/asm/unistd.h | 3 --- arch/parisc/kernel/syscalls/syscall.tbl | 4 ++++ arch/s390/include/asm/unistd.h | 3 --- arch/s390/kernel/syscalls/syscall.tbl | 3 +++ arch/sh/kernel/syscalls/syscall.tbl | 4 ++++ arch/sparc/include/asm/unistd.h | 5 ----- arch/sparc/kernel/syscalls/syscall.tbl | 4 ++++ arch/xtensa/kernel/syscalls/syscall.tbl | 1 + 12 files changed, 28 insertions(+), 15 deletions(-)