Loading arch/arm64/include/asm/syscalls.h +6 −5 Original line number Diff line number Diff line Loading @@ -23,15 +23,16 @@ /* * System call wrappers implemented in kernel/entry.S. */ asmlinkage long sys_clone_wrapper(unsigned long clone_flags, unsigned long newsp, void __user *parent_tid, unsigned long tls_val, void __user *child_tid); asmlinkage long sys_rt_sigreturn_wrapper(void); asmlinkage long sys_sigaltstack_wrapper(const stack_t __user *uss, stack_t __user *uoss); /* * AArch64 sys_clone implementation has a different prototype than the generic * one (additional TLS value argument). */ #define sys_clone sys_clone #include <asm-generic/syscalls.h> #endif /* __ASM_SYSCALLS_H */ arch/arm64/include/asm/unistd32.h +3 −3 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ __SYSCALL(0, sys_restart_syscall) __SYSCALL(1, sys_exit) __SYSCALL(2, compat_sys_fork_wrapper) __SYSCALL(2, compat_sys_fork) __SYSCALL(3, sys_read) __SYSCALL(4, sys_write) __SYSCALL(5, compat_sys_open) Loading Loading @@ -141,7 +141,7 @@ __SYSCALL(116, compat_sys_sysinfo) __SYSCALL(117, sys_ni_syscall) /* 117 was sys_ipc */ __SYSCALL(118, sys_fsync) __SYSCALL(119, compat_sys_sigreturn_wrapper) __SYSCALL(120, compat_sys_clone_wrapper) __SYSCALL(120, sys_clone) __SYSCALL(121, sys_setdomainname) __SYSCALL(122, sys_newuname) __SYSCALL(123, sys_ni_syscall) /* 123 was sys_modify_ldt */ Loading Loading @@ -211,7 +211,7 @@ __SYSCALL(186, compat_sys_sigaltstack_wrapper) __SYSCALL(187, compat_sys_sendfile) __SYSCALL(188, sys_ni_syscall) /* 188 reserved */ __SYSCALL(189, sys_ni_syscall) /* 189 reserved */ __SYSCALL(190, compat_sys_vfork_wrapper) __SYSCALL(190, compat_sys_vfork) __SYSCALL(191, compat_sys_getrlimit) /* SuS compliant getrlimit */ __SYSCALL(192, sys_mmap_pgoff) __SYSCALL(193, compat_sys_truncate64_wrapper) Loading arch/arm64/kernel/entry.S +0 −5 Original line number Diff line number Diff line Loading @@ -676,11 +676,6 @@ __sys_trace_return: /* * Special system call wrappers. */ ENTRY(sys_clone_wrapper) mov x5, sp b sys_clone ENDPROC(sys_clone_wrapper) ENTRY(sys_rt_sigreturn_wrapper) mov x0, sp b sys_rt_sigreturn Loading arch/arm64/kernel/process.c +8 −2 Original line number Diff line number Diff line Loading @@ -246,6 +246,7 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start, *childregs = *regs; childregs->regs[0] = 0; if (is_compat_thread(task_thread_info(p))) { if (stack_start) childregs->compat_sp = stack_start; } else { /* Loading @@ -253,8 +254,13 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start, * out-of-sync with the saved value. */ asm("mrs %0, tpidr_el0" : "=r" (tls)); if (stack_start) { /* 16-byte aligned stack mandatory on AArch64 */ if (stack_start & 15) return -EINVAL; childregs->sp = stack_start; } } /* * If a TLS pointer was passed to clone (4th argument), use it * for the new thread. Loading arch/arm64/kernel/sys.c +3 −8 Original line number Diff line number Diff line Loading @@ -31,14 +31,10 @@ */ asmlinkage long sys_clone(unsigned long clone_flags, unsigned long newsp, int __user *parent_tidptr, unsigned long tls_val, int __user *child_tidptr, struct pt_regs *regs) int __user *child_tidptr) { if (!newsp) newsp = regs->sp; /* 16-byte aligned stack mandatory on AArch64 */ if (newsp & 15) return -EINVAL; return do_fork(clone_flags, newsp, regs, 0, parent_tidptr, child_tidptr); return do_fork(clone_flags, newsp, current_pt_regs(), 0, parent_tidptr, child_tidptr); } asmlinkage long sys_mmap(unsigned long addr, unsigned long len, Loading @@ -54,7 +50,6 @@ asmlinkage long sys_mmap(unsigned long addr, unsigned long len, /* * Wrappers to pass the pt_regs argument. */ #define sys_clone sys_clone_wrapper #define sys_rt_sigreturn sys_rt_sigreturn_wrapper #define sys_sigaltstack sys_sigaltstack_wrapper Loading Loading
arch/arm64/include/asm/syscalls.h +6 −5 Original line number Diff line number Diff line Loading @@ -23,15 +23,16 @@ /* * System call wrappers implemented in kernel/entry.S. */ asmlinkage long sys_clone_wrapper(unsigned long clone_flags, unsigned long newsp, void __user *parent_tid, unsigned long tls_val, void __user *child_tid); asmlinkage long sys_rt_sigreturn_wrapper(void); asmlinkage long sys_sigaltstack_wrapper(const stack_t __user *uss, stack_t __user *uoss); /* * AArch64 sys_clone implementation has a different prototype than the generic * one (additional TLS value argument). */ #define sys_clone sys_clone #include <asm-generic/syscalls.h> #endif /* __ASM_SYSCALLS_H */
arch/arm64/include/asm/unistd32.h +3 −3 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ __SYSCALL(0, sys_restart_syscall) __SYSCALL(1, sys_exit) __SYSCALL(2, compat_sys_fork_wrapper) __SYSCALL(2, compat_sys_fork) __SYSCALL(3, sys_read) __SYSCALL(4, sys_write) __SYSCALL(5, compat_sys_open) Loading Loading @@ -141,7 +141,7 @@ __SYSCALL(116, compat_sys_sysinfo) __SYSCALL(117, sys_ni_syscall) /* 117 was sys_ipc */ __SYSCALL(118, sys_fsync) __SYSCALL(119, compat_sys_sigreturn_wrapper) __SYSCALL(120, compat_sys_clone_wrapper) __SYSCALL(120, sys_clone) __SYSCALL(121, sys_setdomainname) __SYSCALL(122, sys_newuname) __SYSCALL(123, sys_ni_syscall) /* 123 was sys_modify_ldt */ Loading Loading @@ -211,7 +211,7 @@ __SYSCALL(186, compat_sys_sigaltstack_wrapper) __SYSCALL(187, compat_sys_sendfile) __SYSCALL(188, sys_ni_syscall) /* 188 reserved */ __SYSCALL(189, sys_ni_syscall) /* 189 reserved */ __SYSCALL(190, compat_sys_vfork_wrapper) __SYSCALL(190, compat_sys_vfork) __SYSCALL(191, compat_sys_getrlimit) /* SuS compliant getrlimit */ __SYSCALL(192, sys_mmap_pgoff) __SYSCALL(193, compat_sys_truncate64_wrapper) Loading
arch/arm64/kernel/entry.S +0 −5 Original line number Diff line number Diff line Loading @@ -676,11 +676,6 @@ __sys_trace_return: /* * Special system call wrappers. */ ENTRY(sys_clone_wrapper) mov x5, sp b sys_clone ENDPROC(sys_clone_wrapper) ENTRY(sys_rt_sigreturn_wrapper) mov x0, sp b sys_rt_sigreturn Loading
arch/arm64/kernel/process.c +8 −2 Original line number Diff line number Diff line Loading @@ -246,6 +246,7 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start, *childregs = *regs; childregs->regs[0] = 0; if (is_compat_thread(task_thread_info(p))) { if (stack_start) childregs->compat_sp = stack_start; } else { /* Loading @@ -253,8 +254,13 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start, * out-of-sync with the saved value. */ asm("mrs %0, tpidr_el0" : "=r" (tls)); if (stack_start) { /* 16-byte aligned stack mandatory on AArch64 */ if (stack_start & 15) return -EINVAL; childregs->sp = stack_start; } } /* * If a TLS pointer was passed to clone (4th argument), use it * for the new thread. Loading
arch/arm64/kernel/sys.c +3 −8 Original line number Diff line number Diff line Loading @@ -31,14 +31,10 @@ */ asmlinkage long sys_clone(unsigned long clone_flags, unsigned long newsp, int __user *parent_tidptr, unsigned long tls_val, int __user *child_tidptr, struct pt_regs *regs) int __user *child_tidptr) { if (!newsp) newsp = regs->sp; /* 16-byte aligned stack mandatory on AArch64 */ if (newsp & 15) return -EINVAL; return do_fork(clone_flags, newsp, regs, 0, parent_tidptr, child_tidptr); return do_fork(clone_flags, newsp, current_pt_regs(), 0, parent_tidptr, child_tidptr); } asmlinkage long sys_mmap(unsigned long addr, unsigned long len, Loading @@ -54,7 +50,6 @@ asmlinkage long sys_mmap(unsigned long addr, unsigned long len, /* * Wrappers to pass the pt_regs argument. */ #define sys_clone sys_clone_wrapper #define sys_rt_sigreturn sys_rt_sigreturn_wrapper #define sys_sigaltstack sys_sigaltstack_wrapper Loading