Re: [PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
On 10/6/2023 1:29 PM, Arnd Bergmann wrote: > On Fri, Oct 6, 2023, at 22:01, Edgecombe, Rick P wrote: >> Hi Arnd, >> >> It doesn't look like anyone is pouncing on the syscall number in linux- >> next currently. It might be nice to have this patch go through linux- >> next since it touches so many architectures. And it sounds like x86 >> folk are ok with this, so if you could pick it up for 6.7 that would be >> great. Thanks! > > Ok, I picked it up now, should be in linux-next starting next week. > Great, thanks Arnd and Rick! Sohil
Re: [PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
On Fri, Oct 6, 2023, at 22:01, Edgecombe, Rick P wrote: > On Tue, 2023-10-03 at 10:18 -0700, Sohil Mehta wrote: >> > If you like, I can pick this up for 6.7 through the asm-generic >> > tree. If you think this should be part of 6.6, I would suggest >> > to merge it through the tree that originally contained the >> > syscall code. >> > >> >> Dave, Ingo, would you prefer to take this patch through 6.6 or defer >> it >> until 6.7? >> >> It's not necessarily a fix but it does help finish up the shstk >> syscall >> added with 6.6. Also, it might help reduce some merge conflicts later >> if >> newer syscalls are being added during the 6.7 window. > > Hi Arnd, > > It doesn't look like anyone is pouncing on the syscall number in linux- > next currently. It might be nice to have this patch go through linux- > next since it touches so many architectures. And it sounds like x86 > folk are ok with this, so if you could pick it up for 6.7 that would be > great. Thanks! Ok, I picked it up now, should be in linux-next starting next week. Arnd
Re: [PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
On Tue, 2023-10-03 at 10:18 -0700, Sohil Mehta wrote: > > If you like, I can pick this up for 6.7 through the asm-generic > > tree. If you think this should be part of 6.6, I would suggest > > to merge it through the tree that originally contained the > > syscall code. > > > > Dave, Ingo, would you prefer to take this patch through 6.6 or defer > it > until 6.7? > > It's not necessarily a fix but it does help finish up the shstk > syscall > added with 6.6. Also, it might help reduce some merge conflicts later > if > newer syscalls are being added during the 6.7 window. Hi Arnd, It doesn't look like anyone is pouncing on the syscall number in linux- next currently. It might be nice to have this patch go through linux- next since it touches so many architectures. And it sounds like x86 folk are ok with this, so if you could pick it up for 6.7 that would be great. Thanks!
Re: [PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
On Thu, Sep 14, 2023 at 06:58:03PM +, Sohil Mehta wrote: > commit c35559f94ebc ("x86/shstk: Introduce map_shadow_stack syscall") > recently added support for map_shadow_stack() but it is limited to x86 > only for now. There is a possibility that other architectures (namely, > arm64 and RISC-V), that are implementing equivalent support for shadow > stacks, might need to add support for it. > > Independent of that, reserving arch-specific syscall numbers in the > syscall tables of all architectures is good practice and would help > avoid future conflicts. map_shadow_stack() is marked as a conditional > syscall in sys_ni.c. Adding it to the syscall tables of other > architectures is harmless and would return ENOSYS when exercised. > > Note, map_shadow_stack() was assigned #453 during the merge process > since #452 was taken by fchmodat2(). > > For Powerpc, map it to sys_ni_syscall() as is the norm for Powerpc > syscall tables. > > For Alpha, map_shadow_stack() takes up #563 as Alpha still diverges from > the common syscall numbering system in the other architectures. > > Link: > https://lore.kernel.org/lkml/20230515212255.ga562...@debug.ba.rivosinc.com/ > Link: > https://lore.kernel.org/lkml/b402b80b-a7c6-4ef0-b977-c0f5f582b...@sirena.org.uk/ > > Signed-off-by: Sohil Mehta > --- > v2: > - Skip syscall table changes to tools/. They will be handled separetely by the > perf folks. > - Map Powerpc to sys_ni_syscall (Rick Edgecombe) > --- > arch/alpha/kernel/syscalls/syscall.tbl | 1 + > arch/arm/tools/syscall.tbl | 1 + > arch/arm64/include/asm/unistd.h | 2 +- > arch/arm64/include/asm/unistd32.h | 2 ++ For arm64 (compat): Acked-by: Catalin Marinas
Re: [PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
On Thu, Sep 14, 2023 at 8:59 PM Sohil Mehta wrote: > commit c35559f94ebc ("x86/shstk: Introduce map_shadow_stack syscall") > recently added support for map_shadow_stack() but it is limited to x86 > only for now. There is a possibility that other architectures (namely, > arm64 and RISC-V), that are implementing equivalent support for shadow > stacks, might need to add support for it. > > Independent of that, reserving arch-specific syscall numbers in the > syscall tables of all architectures is good practice and would help > avoid future conflicts. map_shadow_stack() is marked as a conditional > syscall in sys_ni.c. Adding it to the syscall tables of other > architectures is harmless and would return ENOSYS when exercised. > > Note, map_shadow_stack() was assigned #453 during the merge process > since #452 was taken by fchmodat2(). > > For Powerpc, map it to sys_ni_syscall() as is the norm for Powerpc > syscall tables. > > For Alpha, map_shadow_stack() takes up #563 as Alpha still diverges from > the common syscall numbering system in the other architectures. > > Link: > https://lore.kernel.org/lkml/20230515212255.ga562...@debug.ba.rivosinc.com/ > Link: > https://lore.kernel.org/lkml/b402b80b-a7c6-4ef0-b977-c0f5f582b...@sirena.org.uk/ > > Signed-off-by: Sohil Mehta > arch/m68k/kernel/syscalls/syscall.tbl | 1 + Acked-by: Geert Uytterhoeven Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Re: [PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
On 10/3/2023 9:54 AM, Arnd Bergmann wrote: > On Tue, Oct 3, 2023, at 18:35, Sohil Mehta wrote: >> >> Gentle ping... >> >> Are there any additional comments? It applies cleanly on 6.6-rc4. >> >> Or does it seem ready to be merged? It has the following >> acknowledgements until now: >> >> Reviewed-by: Rick Edgecombe >> Acked-by: Michael Ellerman (powerpc) >> > > Reviewed-by: Arnd Bergmann > Thanks Arnd. > If you like, I can pick this up for 6.7 through the asm-generic > tree. If you think this should be part of 6.6, I would suggest > to merge it through the tree that originally contained the > syscall code. > Dave, Ingo, would you prefer to take this patch through 6.6 or defer it until 6.7? It's not necessarily a fix but it does help finish up the shstk syscall added with 6.6. Also, it might help reduce some merge conflicts later if newer syscalls are being added during the 6.7 window. Sohil
Re: [PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
On Tue, Oct 3, 2023, at 18:35, Sohil Mehta wrote: > On 9/14/2023 11:58 AM, Sohil Mehta wrote: >> commit c35559f94ebc ("x86/shstk: Introduce map_shadow_stack syscall") >> recently added support for map_shadow_stack() but it is limited to x86 >> only for now. There is a possibility that other architectures (namely, >> arm64 and RISC-V), that are implementing equivalent support for shadow >> stacks, might need to add support for it. >> >> Independent of that, reserving arch-specific syscall numbers in the >> syscall tables of all architectures is good practice and would help >> avoid future conflicts. map_shadow_stack() is marked as a conditional >> syscall in sys_ni.c. Adding it to the syscall tables of other >> architectures is harmless and would return ENOSYS when exercised. >> >> Note, map_shadow_stack() was assigned #453 during the merge process >> since #452 was taken by fchmodat2(). >> >> For Powerpc, map it to sys_ni_syscall() as is the norm for Powerpc >> syscall tables. >> >> For Alpha, map_shadow_stack() takes up #563 as Alpha still diverges from >> the common syscall numbering system in the other architectures. >> >> Link: >> https://lore.kernel.org/lkml/20230515212255.ga562...@debug.ba.rivosinc.com/ >> Link: >> https://lore.kernel.org/lkml/b402b80b-a7c6-4ef0-b977-c0f5f582b...@sirena.org.uk/ >> >> Signed-off-by: Sohil Mehta >> --- > > Gentle ping... > > Are there any additional comments? It applies cleanly on 6.6-rc4. > > Or does it seem ready to be merged? It has the following > acknowledgements until now: > > Reviewed-by: Rick Edgecombe > Acked-by: Michael Ellerman (powerpc) > Reviewed-by: Arnd Bergmann If you like, I can pick this up for 6.7 through the asm-generic tree. If you think this should be part of 6.6, I would suggest to merge it through the tree that originally contained the syscall code. Arnd
Re: [PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
On 9/14/2023 11:58 AM, Sohil Mehta wrote: > commit c35559f94ebc ("x86/shstk: Introduce map_shadow_stack syscall") > recently added support for map_shadow_stack() but it is limited to x86 > only for now. There is a possibility that other architectures (namely, > arm64 and RISC-V), that are implementing equivalent support for shadow > stacks, might need to add support for it. > > Independent of that, reserving arch-specific syscall numbers in the > syscall tables of all architectures is good practice and would help > avoid future conflicts. map_shadow_stack() is marked as a conditional > syscall in sys_ni.c. Adding it to the syscall tables of other > architectures is harmless and would return ENOSYS when exercised. > > Note, map_shadow_stack() was assigned #453 during the merge process > since #452 was taken by fchmodat2(). > > For Powerpc, map it to sys_ni_syscall() as is the norm for Powerpc > syscall tables. > > For Alpha, map_shadow_stack() takes up #563 as Alpha still diverges from > the common syscall numbering system in the other architectures. > > Link: > https://lore.kernel.org/lkml/20230515212255.ga562...@debug.ba.rivosinc.com/ > Link: > https://lore.kernel.org/lkml/b402b80b-a7c6-4ef0-b977-c0f5f582b...@sirena.org.uk/ > > Signed-off-by: Sohil Mehta > --- Gentle ping... Are there any additional comments? It applies cleanly on 6.6-rc4. Or does it seem ready to be merged? It has the following acknowledgements until now: Reviewed-by: Rick Edgecombe Acked-by: Michael Ellerman (powerpc) > arch/alpha/kernel/syscalls/syscall.tbl | 1 + > arch/arm/tools/syscall.tbl | 1 + > arch/arm64/include/asm/unistd.h | 2 +- > arch/arm64/include/asm/unistd32.h | 2 ++ > arch/ia64/kernel/syscalls/syscall.tbl | 1 + > arch/m68k/kernel/syscalls/syscall.tbl | 1 + > arch/microblaze/kernel/syscalls/syscall.tbl | 1 + > arch/mips/kernel/syscalls/syscall_n32.tbl | 1 + > arch/mips/kernel/syscalls/syscall_n64.tbl | 1 + > arch/mips/kernel/syscalls/syscall_o32.tbl | 1 + > arch/parisc/kernel/syscalls/syscall.tbl | 1 + > arch/powerpc/kernel/syscalls/syscall.tbl| 1 + > arch/s390/kernel/syscalls/syscall.tbl | 1 + > arch/sh/kernel/syscalls/syscall.tbl | 1 + > arch/sparc/kernel/syscalls/syscall.tbl | 1 + > arch/x86/entry/syscalls/syscall_32.tbl | 1 + > arch/xtensa/kernel/syscalls/syscall.tbl | 1 + > include/uapi/asm-generic/unistd.h | 5 - > 18 files changed, 22 insertions(+), 2 deletions(-) >> diff --git a/arch/alpha/kernel/syscalls/syscall.tbl b/arch/alpha/kernel/syscalls/syscall.tbl > index ad37569d0507..6e8479c96e65 100644 > --- a/arch/alpha/kernel/syscalls/syscall.tbl > +++ b/arch/alpha/kernel/syscalls/syscall.tbl > @@ -492,3 +492,4 @@ > 560 common set_mempolicy_home_node sys_ni_syscall > 561 common cachestat sys_cachestat > 562 common fchmodat2 sys_fchmodat2 > +563 common map_shadow_stacksys_map_shadow_stack > diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl > index c572d6c3dee0..6d494dfbf5e4 100644 > --- a/arch/arm/tools/syscall.tbl > +++ b/arch/arm/tools/syscall.tbl > @@ -466,3 +466,4 @@ > 450 common set_mempolicy_home_node sys_set_mempolicy_home_node > 451 common cachestat sys_cachestat > 452 common fchmodat2 sys_fchmodat2 > +453 common map_shadow_stacksys_map_shadow_stack > diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h > index bd77253b62e0..6a28fb91b85d 100644 > --- a/arch/arm64/include/asm/unistd.h > +++ b/arch/arm64/include/asm/unistd.h > @@ -39,7 +39,7 @@ > #define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE + 5) > #define __ARM_NR_COMPAT_END (__ARM_NR_COMPAT_BASE + 0x800) > > -#define __NR_compat_syscalls 453 > +#define __NR_compat_syscalls 454 > #endif > > #define __ARCH_WANT_SYS_CLONE > diff --git a/arch/arm64/include/asm/unistd32.h > b/arch/arm64/include/asm/unistd32.h > index 78b68311ec81..a201d842ec82 100644 > --- a/arch/arm64/include/asm/unistd32.h > +++ b/arch/arm64/include/asm/unistd32.h > @@ -911,6 +911,8 @@ __SYSCALL(__NR_set_mempolicy_home_node, > sys_set_mempolicy_home_node) > __SYSCALL(__NR_cachestat, sys_cachestat) > #define __NR_fchmodat2 452 > __SYSCALL(__NR_fchmodat2, sys_fchmodat2) > +#define __NR_map_shadow_stack 453 > +__SYSCALL(__NR_map_shadow_stack, sys_map_shadow_stack) > > /* > * Please add new compat syscalls above this comment and update > diff --git a/arch/ia64/kernel/syscalls/syscall.tbl > b/arch/ia64/kernel/syscalls/syscall.tbl > index 83d8609aec03..be02ce9d376f 100644 > --- a/arch/ia64/kernel/syscalls/syscall.tbl > +++ b/arch/ia64/kernel/syscalls/syscall.tbl > @@ -373,3 +373,4 @@ > 450 common set_mempolicy_home_node sys_set_mempolicy_home_node > 451 common cachestat
Re: [PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
Sohil Mehta writes: > commit c35559f94ebc ("x86/shstk: Introduce map_shadow_stack syscall") > recently added support for map_shadow_stack() but it is limited to x86 > only for now. There is a possibility that other architectures (namely, > arm64 and RISC-V), that are implementing equivalent support for shadow > stacks, might need to add support for it. > > Independent of that, reserving arch-specific syscall numbers in the > syscall tables of all architectures is good practice and would help > avoid future conflicts. map_shadow_stack() is marked as a conditional > syscall in sys_ni.c. Adding it to the syscall tables of other > architectures is harmless and would return ENOSYS when exercised. > > Note, map_shadow_stack() was assigned #453 during the merge process > since #452 was taken by fchmodat2(). > > For Powerpc, map it to sys_ni_syscall() as is the norm for Powerpc > syscall tables. Mapping it to sys_map_shadow_stack() would work fine, but I'm happy with sys_ni_syscall as I don't see powerpc implementing map_shadow_stack() any time soon. Acked-by: Michael Ellerman (powerpc) cheers
Re: [PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
On Thu, 2023-09-14 at 18:58 +, Sohil Mehta wrote: > commit c35559f94ebc ("x86/shstk: Introduce map_shadow_stack syscall") > recently added support for map_shadow_stack() but it is limited to > x86 > only for now. There is a possibility that other architectures > (namely, > arm64 and RISC-V), that are implementing equivalent support for > shadow > stacks, might need to add support for it. > > Independent of that, reserving arch-specific syscall numbers in the > syscall tables of all architectures is good practice and would help > avoid future conflicts. map_shadow_stack() is marked as a conditional > syscall in sys_ni.c. Adding it to the syscall tables of other > architectures is harmless and would return ENOSYS when exercised. > > Note, map_shadow_stack() was assigned #453 during the merge process > since #452 was taken by fchmodat2(). > > For Powerpc, map it to sys_ni_syscall() as is the norm for Powerpc > syscall tables. > > For Alpha, map_shadow_stack() takes up #563 as Alpha still diverges > from > the common syscall numbering system in the other architectures. Reviewed-by: Rick Edgecombe
[PATCH v2] arch: Reserve map_shadow_stack() syscall number for all architectures
commit c35559f94ebc ("x86/shstk: Introduce map_shadow_stack syscall") recently added support for map_shadow_stack() but it is limited to x86 only for now. There is a possibility that other architectures (namely, arm64 and RISC-V), that are implementing equivalent support for shadow stacks, might need to add support for it. Independent of that, reserving arch-specific syscall numbers in the syscall tables of all architectures is good practice and would help avoid future conflicts. map_shadow_stack() is marked as a conditional syscall in sys_ni.c. Adding it to the syscall tables of other architectures is harmless and would return ENOSYS when exercised. Note, map_shadow_stack() was assigned #453 during the merge process since #452 was taken by fchmodat2(). For Powerpc, map it to sys_ni_syscall() as is the norm for Powerpc syscall tables. For Alpha, map_shadow_stack() takes up #563 as Alpha still diverges from the common syscall numbering system in the other architectures. Link: https://lore.kernel.org/lkml/20230515212255.ga562...@debug.ba.rivosinc.com/ Link: https://lore.kernel.org/lkml/b402b80b-a7c6-4ef0-b977-c0f5f582b...@sirena.org.uk/ Signed-off-by: Sohil Mehta --- v2: - Skip syscall table changes to tools/. They will be handled separetely by the perf folks. - Map Powerpc to sys_ni_syscall (Rick Edgecombe) --- arch/alpha/kernel/syscalls/syscall.tbl | 1 + arch/arm/tools/syscall.tbl | 1 + arch/arm64/include/asm/unistd.h | 2 +- arch/arm64/include/asm/unistd32.h | 2 ++ arch/ia64/kernel/syscalls/syscall.tbl | 1 + arch/m68k/kernel/syscalls/syscall.tbl | 1 + arch/microblaze/kernel/syscalls/syscall.tbl | 1 + arch/mips/kernel/syscalls/syscall_n32.tbl | 1 + arch/mips/kernel/syscalls/syscall_n64.tbl | 1 + arch/mips/kernel/syscalls/syscall_o32.tbl | 1 + arch/parisc/kernel/syscalls/syscall.tbl | 1 + arch/powerpc/kernel/syscalls/syscall.tbl| 1 + arch/s390/kernel/syscalls/syscall.tbl | 1 + arch/sh/kernel/syscalls/syscall.tbl | 1 + arch/sparc/kernel/syscalls/syscall.tbl | 1 + arch/x86/entry/syscalls/syscall_32.tbl | 1 + arch/xtensa/kernel/syscalls/syscall.tbl | 1 + include/uapi/asm-generic/unistd.h | 5 - 18 files changed, 22 insertions(+), 2 deletions(-) diff --git a/arch/alpha/kernel/syscalls/syscall.tbl b/arch/alpha/kernel/syscalls/syscall.tbl index ad37569d0507..6e8479c96e65 100644 --- a/arch/alpha/kernel/syscalls/syscall.tbl +++ b/arch/alpha/kernel/syscalls/syscall.tbl @@ -492,3 +492,4 @@ 560common set_mempolicy_home_node sys_ni_syscall 561common cachestat sys_cachestat 562common fchmodat2 sys_fchmodat2 +563common map_shadow_stacksys_map_shadow_stack diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl index c572d6c3dee0..6d494dfbf5e4 100644 --- a/arch/arm/tools/syscall.tbl +++ b/arch/arm/tools/syscall.tbl @@ -466,3 +466,4 @@ 450common set_mempolicy_home_node sys_set_mempolicy_home_node 451common cachestat sys_cachestat 452common fchmodat2 sys_fchmodat2 +453common map_shadow_stacksys_map_shadow_stack diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h index bd77253b62e0..6a28fb91b85d 100644 --- a/arch/arm64/include/asm/unistd.h +++ b/arch/arm64/include/asm/unistd.h @@ -39,7 +39,7 @@ #define __ARM_NR_compat_set_tls(__ARM_NR_COMPAT_BASE + 5) #define __ARM_NR_COMPAT_END(__ARM_NR_COMPAT_BASE + 0x800) -#define __NR_compat_syscalls 453 +#define __NR_compat_syscalls 454 #endif #define __ARCH_WANT_SYS_CLONE diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h index 78b68311ec81..a201d842ec82 100644 --- a/arch/arm64/include/asm/unistd32.h +++ b/arch/arm64/include/asm/unistd32.h @@ -911,6 +911,8 @@ __SYSCALL(__NR_set_mempolicy_home_node, sys_set_mempolicy_home_node) __SYSCALL(__NR_cachestat, sys_cachestat) #define __NR_fchmodat2 452 __SYSCALL(__NR_fchmodat2, sys_fchmodat2) +#define __NR_map_shadow_stack 453 +__SYSCALL(__NR_map_shadow_stack, sys_map_shadow_stack) /* * Please add new compat syscalls above this comment and update diff --git a/arch/ia64/kernel/syscalls/syscall.tbl b/arch/ia64/kernel/syscalls/syscall.tbl index 83d8609aec03..be02ce9d376f 100644 --- a/arch/ia64/kernel/syscalls/syscall.tbl +++ b/arch/ia64/kernel/syscalls/syscall.tbl @@ -373,3 +373,4 @@ 450common set_mempolicy_home_node sys_set_mempolicy_home_node 451common cachestat sys_cachestat 452common fchmodat2 sys_fchmodat2 +453common map_shadow_stacksys_map_shadow_stack diff --git a/arch/m68k/kernel/syscalls/syscall.tbl b/arch/m68k/kernel/syscalls/syscall.tbl index 259ceb125367..bee2d2f7f82c 100644 ---