]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
nios2: implement architecture-specific portion of sys_clone3
authorSimon Schuster <schuster.simon@siemens-energy.com>
Mon, 1 Sep 2025 13:09:53 +0000 (15:09 +0200)
committerChristian Brauner <brauner@kernel.org>
Mon, 1 Sep 2025 13:31:34 +0000 (15:31 +0200)
This commit adds the sys_clone3 entry point for nios2. An
architecture-specific wrapper (__sys_clone3) is required to save and
restore additional registers to the kernel stack via SAVE_SWITCH_STACK
and RESTORE_SWITCH_STACK.

Signed-off-by: Simon Schuster <schuster.simon@siemens-energy.com>
Link: https://lore.kernel.org/20250901-nios2-implement-clone3-v2-4-53fcf5577d57@siemens-energy.com
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Christian Brauner <brauner@kernel.org>
arch/nios2/include/asm/syscalls.h
arch/nios2/include/asm/unistd.h
arch/nios2/kernel/entry.S
arch/nios2/kernel/syscall_table.c

index b4d4ed3bf9c86c787af760e6944601db6fd5d247..0e214b0a0ac89f80a6f382939925294eddeacf1d 100644 (file)
@@ -7,6 +7,7 @@
 
 int sys_cacheflush(unsigned long addr, unsigned long len,
                                unsigned int op);
+asmlinkage long __sys_clone3(struct clone_args __user *uargs, size_t size);
 
 #include <asm-generic/syscalls.h>
 
index 1146e56473c51284402d153d00bb6d2e2aa0216e..213f6de3cf7b106b5bcfa63e6c077e11c58c6967 100644 (file)
@@ -7,6 +7,4 @@
 #define __ARCH_WANT_STAT64
 #define __ARCH_WANT_SET_GET_RLIMIT
 
-#define __ARCH_BROKEN_SYS_CLONE3
-
 #endif
index 99f0a65e62347e24f8b7efb8d482888ef860d4b7..dd40dfd908e59cf50247b6e68c893ef4b458f290 100644 (file)
@@ -403,6 +403,12 @@ ENTRY(sys_clone)
        addi    sp, sp, 4
        RESTORE_SWITCH_STACK
        ret
+/* long syscall(SYS_clone3, struct clone_args *cl_args, size_t size); */
+ENTRY(__sys_clone3)
+       SAVE_SWITCH_STACK
+       call    sys_clone3
+       RESTORE_SWITCH_STACK
+       ret
 
 ENTRY(sys_rt_sigreturn)
        SAVE_SWITCH_STACK
index 434694067d8f5568f5a494b9eece306c5534c4a2..c99818aac9e1b867d168775d8bdf7e2f11e76f0f 100644 (file)
@@ -13,6 +13,7 @@
 #define __SYSCALL_WITH_COMPAT(nr, native, compat)        __SYSCALL(nr, native)
 
 #define sys_mmap2 sys_mmap_pgoff
+#define sys_clone3 __sys_clone3
 
 void *sys_call_table[__NR_syscalls] = {
        [0 ... __NR_syscalls-1] = sys_ni_syscall,