arm64: Use generic sys_execve() implementation
authorCatalin Marinas <catalin.marinas@arm.com>
Mon, 10 Sep 2012 15:11:46 +0000 (16:11 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 17 Oct 2012 13:41:51 +0000 (14:41 +0100)
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>
arch/arm64/include/asm/syscalls.h
arch/arm64/include/asm/unistd.h
arch/arm64/include/asm/unistd32.h
arch/arm64/kernel/entry.S
arch/arm64/kernel/sys.c
arch/arm64/kernel/sys32.S
arch/arm64/kernel/sys_compat.c

index 09ff33572aab0eb41efbc409173abce71eb2c5f9..81680a0ae913e0cb61c6d52e6c583d3cc4532268 100644 (file)
@@ -23,9 +23,6 @@
 /*
  * System call wrappers implemented in kernel/entry.S.
  */
-asmlinkage long sys_execve_wrapper(const char __user *filename,
-                                  const char __user *const __user *argv,
-                                  const char __user *const __user *envp);
 asmlinkage long sys_clone_wrapper(unsigned long clone_flags,
                                  unsigned long newsp,
                                  void __user *parent_tid,
index 63f853f8b718026a69342ce8bb46ff6fd948066e..b40dc6b69848a0753cecbbd77f38573a86863b1c 100644 (file)
@@ -26,4 +26,5 @@
 #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
 #define __ARCH_WANT_COMPAT_SYS_SENDFILE
 #endif
+#define __ARCH_WANT_SYS_EXECVE
 #include <uapi/asm/unistd.h>
index 6d909faebf28d155020ef96e17654d5ae74bed6f..9035e6add3e475849464cbdd8f22d2f332806140 100644 (file)
@@ -32,7 +32,7 @@ __SYSCALL(7,   sys_ni_syscall)                        /* 7 was sys_waitpid */
 __SYSCALL(8,   sys_creat)
 __SYSCALL(9,   sys_link)
 __SYSCALL(10,  sys_unlink)
-__SYSCALL(11,  compat_sys_execve_wrapper)
+__SYSCALL(11,  compat_sys_execve)
 __SYSCALL(12,  sys_chdir)
 __SYSCALL(13,  sys_ni_syscall)                 /* 13 was sys_time */
 __SYSCALL(14,  sys_mknod)
index 00daf922733e905ce5d9478a1f8f544f110c41a9..616531862d52214f070226cd8699cd731a235f4e 100644 (file)
@@ -676,11 +676,6 @@ __sys_trace_return:
 /*
  * Special system call wrappers.
  */
-ENTRY(sys_execve_wrapper)
-       mov     x3, sp
-       b       sys_execve
-ENDPROC(sys_execve_wrapper)
-
 ENTRY(sys_clone_wrapper)
        mov     x5, sp
        b       sys_clone
index 4deb0d0093cdf761929191e7a71ddedbbe73d087..9c77c0bacc1db6a7cbdd907f23338019c5799a11 100644 (file)
@@ -41,27 +41,6 @@ asmlinkage long sys_clone(unsigned long clone_flags, unsigned long newsp,
        return do_fork(clone_flags, newsp, regs, 0, parent_tidptr, child_tidptr);
 }
 
-/*
- * sys_execve() executes a new program.
- */
-asmlinkage long sys_execve(const char __user *filenamei,
-                          const char __user *const __user *argv,
-                          const char __user *const __user *envp,
-                          struct pt_regs *regs)
-{
-       long error;
-       struct filename *filename;
-
-       filename = getname(filenamei);
-       error = PTR_ERR(filename);
-       if (IS_ERR(filename))
-               goto out;
-       error = do_execve(filename->name, argv, envp, regs);
-       putname(filename);
-out:
-       return error;
-}
-
 asmlinkage long sys_mmap(unsigned long addr, unsigned long len,
                         unsigned long prot, unsigned long flags,
                         unsigned long fd, off_t off)
@@ -75,7 +54,6 @@ asmlinkage long sys_mmap(unsigned long addr, unsigned long len,
 /*
  * Wrappers to pass the pt_regs argument.
  */
-#define sys_execve             sys_execve_wrapper
 #define sys_clone              sys_clone_wrapper
 #define sys_rt_sigreturn       sys_rt_sigreturn_wrapper
 #define sys_sigaltstack                sys_sigaltstack_wrapper
index 54c4aec47a088f9d32382980011b3cab6336fb80..92145d402cf19afa75fec5d10765ad924fb78f25 100644 (file)
@@ -36,11 +36,6 @@ compat_sys_vfork_wrapper:
        b       compat_sys_vfork
 ENDPROC(compat_sys_vfork_wrapper)
 
-compat_sys_execve_wrapper:
-       mov     x3, sp
-       b       compat_sys_execve
-ENDPROC(compat_sys_execve_wrapper)
-
 compat_sys_clone_wrapper:
        mov     x5, sp
        b       compat_sys_clone
index 906e3bd270b06de91bbab8505df7877ca0300922..d140b73a8bc419e64f866dd10fd17b94d2d045f2 100644 (file)
@@ -49,24 +49,6 @@ asmlinkage int compat_sys_vfork(struct pt_regs *regs)
                       regs, 0, NULL, NULL);
 }
 
-asmlinkage int compat_sys_execve(const char __user *filenamei,
-                                compat_uptr_t argv, compat_uptr_t envp,
-                                struct pt_regs *regs)
-{
-       int error;
-       struct filename *filename;
-
-       filename = getname(filenamei);
-       error = PTR_ERR(filename);
-       if (IS_ERR(filename))
-               goto out;
-       error = compat_do_execve(filename->name, compat_ptr(argv),
-                                       compat_ptr(envp), regs);
-       putname(filename);
-out:
-       return error;
-}
-
 asmlinkage int compat_sys_sched_rr_get_interval(compat_pid_t pid,
                                                struct compat_timespec __user *interval)
 {