Re: [PATCH 15/15] arch: add pkey and rseq syscall numbers everywhere
On Tue, Jan 15, 2019 at 12:52 PM Russell King - ARM Linux admin 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
Re: [PATCH 15/15] arch: add pkey and rseq syscall numbers everywhere
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 > --- > 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 pwritev2sys_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 rseqsys_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 rseqsys_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 pwritev2sys_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 rseqsys_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 pwritev2sys_pwritev2 > compat_sys_pwritev2 > 349 common statx sys_statx > 350 common io_pgetevents sys_io_pgetevents > compat_sys_io_pgete
Re: [PATCH 15/15] arch: add pkey and rseq syscall numbers everywhere
On Fri, Jan 11, 2019 at 06:30:43PM +0100, Arnd Bergmann wrote: > On Thu, Jan 10, 2019 at 9:36 PM Heiko Carstens > 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.
Re: [PATCH 15/15] arch: add pkey and rseq syscall numbers everywhere
On Thu, Jan 10, 2019 at 9:36 PM Heiko Carstens 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
Re: [PATCH 15/15] arch: add pkey and rseq syscall numbers everywhere
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 > 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 > > #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 rseqsys_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.
[PATCH 15/15] arch: add pkey and rseq syscall numbers everywhere
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 --- 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 @@ 521common pwritev2sys_pwritev2 522common statx sys_statx 523common io_pgetevents sys_io_pgetevents +524common pkey_alloc sys_pkey_alloc +525common pkey_free sys_pkey_free +526common pkey_mprotect sys_pkey_mprotect +527common rseqsys_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 @@ 327common io_pgetevents sys_io_pgetevents 328common perf_event_open sys_perf_event_open 329common seccomp sys_seccomp +330common pkey_alloc sys_pkey_alloc +331common pkey_free sys_pkey_free +332common pkey_mprotect sys_pkey_mprotect +333common rseqsys_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 @@ 378common pwritev2sys_pwritev2 379common statx sys_statx 380common seccomp sys_seccomp +381common pkey_alloc sys_pkey_alloc +382common pkey_free sys_pkey_free +383common pkey_mprotect sys_pkey_mprotect +384common rseqsys_rseq # room for arch specific calls 393common semget sys_semget 394common 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 @@ 348common pwritev2sys_pwritev2 compat_sys_pwritev2 349common statx sys_statx 350common io_pgetevents sys_io_pgetevents compat_sys_io_pgetevents +351common pkey_alloc sys_pkey_alloc +352common pkey_free sys_pkey_free +353common pkey_mprotect sys_pkey_mprotect +354common rseqsys_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/uni