Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

arm64: Use generic sys_execve() implementation

This patch converts the arm64 port to use the generic sys_execve()
implementation removing the arm64-specific (compat_)sys_execve_wrapper()
functions.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>

+2 -54
-3
arch/arm64/include/asm/syscalls.h
··· 23 23 /* 24 24 * System call wrappers implemented in kernel/entry.S. 25 25 */ 26 - asmlinkage long sys_execve_wrapper(const char __user *filename, 27 - const char __user *const __user *argv, 28 - const char __user *const __user *envp); 29 26 asmlinkage long sys_clone_wrapper(unsigned long clone_flags, 30 27 unsigned long newsp, 31 28 void __user *parent_tid,
+1
arch/arm64/include/asm/unistd.h
··· 26 26 #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND 27 27 #define __ARCH_WANT_COMPAT_SYS_SENDFILE 28 28 #endif 29 + #define __ARCH_WANT_SYS_EXECVE 29 30 #include <uapi/asm/unistd.h>
+1 -1
arch/arm64/include/asm/unistd32.h
··· 32 32 __SYSCALL(8, sys_creat) 33 33 __SYSCALL(9, sys_link) 34 34 __SYSCALL(10, sys_unlink) 35 - __SYSCALL(11, compat_sys_execve_wrapper) 35 + __SYSCALL(11, compat_sys_execve) 36 36 __SYSCALL(12, sys_chdir) 37 37 __SYSCALL(13, sys_ni_syscall) /* 13 was sys_time */ 38 38 __SYSCALL(14, sys_mknod)
-5
arch/arm64/kernel/entry.S
··· 676 676 /* 677 677 * Special system call wrappers. 678 678 */ 679 - ENTRY(sys_execve_wrapper) 680 - mov x3, sp 681 - b sys_execve 682 - ENDPROC(sys_execve_wrapper) 683 - 684 679 ENTRY(sys_clone_wrapper) 685 680 mov x5, sp 686 681 b sys_clone
-22
arch/arm64/kernel/sys.c
··· 41 41 return do_fork(clone_flags, newsp, regs, 0, parent_tidptr, child_tidptr); 42 42 } 43 43 44 - /* 45 - * sys_execve() executes a new program. 46 - */ 47 - asmlinkage long sys_execve(const char __user *filenamei, 48 - const char __user *const __user *argv, 49 - const char __user *const __user *envp, 50 - struct pt_regs *regs) 51 - { 52 - long error; 53 - struct filename *filename; 54 - 55 - filename = getname(filenamei); 56 - error = PTR_ERR(filename); 57 - if (IS_ERR(filename)) 58 - goto out; 59 - error = do_execve(filename->name, argv, envp, regs); 60 - putname(filename); 61 - out: 62 - return error; 63 - } 64 - 65 44 asmlinkage long sys_mmap(unsigned long addr, unsigned long len, 66 45 unsigned long prot, unsigned long flags, 67 46 unsigned long fd, off_t off) ··· 54 75 /* 55 76 * Wrappers to pass the pt_regs argument. 56 77 */ 57 - #define sys_execve sys_execve_wrapper 58 78 #define sys_clone sys_clone_wrapper 59 79 #define sys_rt_sigreturn sys_rt_sigreturn_wrapper 60 80 #define sys_sigaltstack sys_sigaltstack_wrapper
-5
arch/arm64/kernel/sys32.S
··· 36 36 b compat_sys_vfork 37 37 ENDPROC(compat_sys_vfork_wrapper) 38 38 39 - compat_sys_execve_wrapper: 40 - mov x3, sp 41 - b compat_sys_execve 42 - ENDPROC(compat_sys_execve_wrapper) 43 - 44 39 compat_sys_clone_wrapper: 45 40 mov x5, sp 46 41 b compat_sys_clone
-18
arch/arm64/kernel/sys_compat.c
··· 49 49 regs, 0, NULL, NULL); 50 50 } 51 51 52 - asmlinkage int compat_sys_execve(const char __user *filenamei, 53 - compat_uptr_t argv, compat_uptr_t envp, 54 - struct pt_regs *regs) 55 - { 56 - int error; 57 - struct filename *filename; 58 - 59 - filename = getname(filenamei); 60 - error = PTR_ERR(filename); 61 - if (IS_ERR(filename)) 62 - goto out; 63 - error = compat_do_execve(filename->name, compat_ptr(argv), 64 - compat_ptr(envp), regs); 65 - putname(filename); 66 - out: 67 - return error; 68 - } 69 - 70 52 asmlinkage int compat_sys_sched_rr_get_interval(compat_pid_t pid, 71 53 struct compat_timespec __user *interval) 72 54 {