* [PATCH v2 07/14] powerpc: Enable compile-time check for syscall handlers
@ 2022-07-25 6:28 Rohan McLure
2022-08-08 5:43 ` Andrew Donnellan
0 siblings, 1 reply; 2+ messages in thread
From: Rohan McLure @ 2022-07-25 6:28 UTC (permalink / raw)
To: linuxppc-dev; +Cc: Rohan McLure, arnd, npiggin
The table of syscall handlers and registered compatibility syscall
handlers has in past been produced using assembly, with function
references resolved at link time. This moves link-time errors to
compile-time, by rewriting systbl.S in C, and including the
linux/syscalls.h, linux/compat.h and asm/syscalls.h headers for
prototypes.
Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rohan McLure <rmclure@linux.ibm.com>
---
V1 -> V2: New patch.
---
arch/powerpc/kernel/{systbl.S => systbl.c} | 27 ++++++++++----------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/arch/powerpc/kernel/systbl.S b/arch/powerpc/kernel/systbl.c
similarity index 59%
rename from arch/powerpc/kernel/systbl.S
rename to arch/powerpc/kernel/systbl.c
index cb3358886203..99ffdfef6b9c 100644
--- a/arch/powerpc/kernel/systbl.S
+++ b/arch/powerpc/kernel/systbl.c
@@ -10,31 +10,32 @@
* PPC64 updates by Dave Engebretsen (engebret@us.ibm.com)
*/
-#include <asm/ppc_asm.h>
+#include <linux/syscalls.h>
+#include <linux/compat.h>
+#include <asm/unistd.h>
+#include <asm/syscalls.h>
-.section .rodata,"a"
+#define __SYSCALL_WITH_COMPAT(nr, entry, compat) __SYSCALL(nr, entry)
-#ifdef CONFIG_PPC64
- .p2align 3
-#define __SYSCALL(nr, entry) .8byte entry
+#ifdef CONFIG_ARCH_HAS_SYSCALL_WRAPPER
+#define __SYSCALL(nr, entry) [nr] = __powerpc_##entry,
+#define __powerpc_sys_ni_syscall sys_ni_syscall
#else
-#define __SYSCALL(nr, entry) .long entry
+#define __SYSCALL(nr, entry) [nr] = entry,
#endif
-#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
-.globl sys_call_table
-sys_call_table:
+void *sys_call_table[] = {
#ifdef CONFIG_PPC64
#include <asm/syscall_table_64.h>
#else
#include <asm/syscall_table_32.h>
#endif
+};
#ifdef CONFIG_COMPAT
#undef __SYSCALL_WITH_COMPAT
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, compat)
-.globl compat_sys_call_table
-compat_sys_call_table:
-#define compat_sys_sigsuspend sys_sigsuspend
+void *compat_sys_call_table[] = {
#include <asm/syscall_table_32.h>
-#endif
+};
+#endif /* CONFIG_COMPAT */
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2 07/14] powerpc: Enable compile-time check for syscall handlers
2022-07-25 6:28 [PATCH v2 07/14] powerpc: Enable compile-time check for syscall handlers Rohan McLure
@ 2022-08-08 5:43 ` Andrew Donnellan
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Donnellan @ 2022-08-08 5:43 UTC (permalink / raw)
To: Rohan McLure, linuxppc-dev; +Cc: npiggin, arnd
On Mon, 2022-07-25 at 16:28 +1000, Rohan McLure wrote:
> The table of syscall handlers and registered compatibility syscall
> handlers has in past been produced using assembly, with function
> references resolved at link time. This moves link-time errors to
> compile-time, by rewriting systbl.S in C, and including the
> linux/syscalls.h, linux/compat.h and asm/syscalls.h headers for
> prototypes.
>
> Reported-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Rohan McLure <rmclure@linux.ibm.com>
> ---
> V1 -> V2: New patch.
> ---
> arch/powerpc/kernel/{systbl.S => systbl.c} | 27 ++++++++++----------
> 1 file changed, 14 insertions(+), 13 deletions(-)
>
> diff --git a/arch/powerpc/kernel/systbl.S
> b/arch/powerpc/kernel/systbl.c
> similarity index 59%
> rename from arch/powerpc/kernel/systbl.S
> rename to arch/powerpc/kernel/systbl.c
> index cb3358886203..99ffdfef6b9c 100644
> --- a/arch/powerpc/kernel/systbl.S
> +++ b/arch/powerpc/kernel/systbl.c
> @@ -10,31 +10,32 @@
> * PPC64 updates by Dave Engebretsen (engebret@us.ibm.com)
> */
>
> -#include <asm/ppc_asm.h>
> +#include <linux/syscalls.h>
> +#include <linux/compat.h>
> +#include <asm/unistd.h>
> +#include <asm/syscalls.h>
>
> -.section .rodata,"a"
> +#define __SYSCALL_WITH_COMPAT(nr, entry, compat) __SYSCALL(nr,
> entry)
>
> -#ifdef CONFIG_PPC64
> - .p2align 3
> -#define __SYSCALL(nr, entry) .8byte entry
> +#ifdef CONFIG_ARCH_HAS_SYSCALL_WRAPPER
> +#define __SYSCALL(nr, entry) [nr] = __powerpc_##entry,
> +#define __powerpc_sys_ni_syscall sys_ni_syscall
Keep this until patch 10.
Otherwise looks alright to me.
> #else
> -#define __SYSCALL(nr, entry) .long entry
> +#define __SYSCALL(nr, entry) [nr] = entry,
> #endif
>
> -#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr,
> native)
> -.globl sys_call_table
> -sys_call_table:
> +void *sys_call_table[] = {
> #ifdef CONFIG_PPC64
> #include <asm/syscall_table_64.h>
> #else
> #include <asm/syscall_table_32.h>
> #endif
> +};
>
> #ifdef CONFIG_COMPAT
> #undef __SYSCALL_WITH_COMPAT
> #define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr,
> compat)
> -.globl compat_sys_call_table
> -compat_sys_call_table:
> -#define compat_sys_sigsuspend sys_sigsuspend
> +void *compat_sys_call_table[] = {
> #include <asm/syscall_table_32.h>
> -#endif
> +};
> +#endif /* CONFIG_COMPAT */
--
Andrew Donnellan OzLabs, ADL Canberra
ajd@linux.ibm.com IBM Australia Limited
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-08-08 5:44 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-25 6:28 [PATCH v2 07/14] powerpc: Enable compile-time check for syscall handlers Rohan McLure
2022-08-08 5:43 ` Andrew Donnellan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.