aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-08-02 03:52:41 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-09-30 22:21:37 -0400
commita63c97a000c9c9a03372943a40c3ba8652aa0ccf (patch)
treec2237a63149f9ac7d2479272c68a371cb21993bd
parentbfd170d56505bf21cb636b0f1f169eaa815bdfe4 (diff)
arm: get rid of execve wrapper, switch to generic execve() implementation
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--arch/arm/include/asm/unistd.h1
-rw-r--r--arch/arm/kernel/calls.S2
-rw-r--r--arch/arm/kernel/entry-common.S5
-rw-r--r--arch/arm/kernel/sys_arm.c20
4 files changed, 2 insertions, 26 deletions
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index 2c9b7a87e64b..6a70aa42debb 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -469,6 +469,7 @@
469#define __ARCH_WANT_OLD_READDIR 469#define __ARCH_WANT_OLD_READDIR
470#define __ARCH_WANT_SYS_SOCKETCALL 470#define __ARCH_WANT_SYS_SOCKETCALL
471#endif 471#endif
472#define __ARCH_WANT_SYS_EXECVE
472#define __ARCH_WANT_KERNEL_EXECVE 473#define __ARCH_WANT_KERNEL_EXECVE
473 474
474/* 475/*
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S
index 463ff4a0ec8a..b287b3580a9f 100644
--- a/arch/arm/kernel/calls.S
+++ b/arch/arm/kernel/calls.S
@@ -20,7 +20,7 @@
20 CALL(sys_creat) 20 CALL(sys_creat)
21 CALL(sys_link) 21 CALL(sys_link)
22/* 10 */ CALL(sys_unlink) 22/* 10 */ CALL(sys_unlink)
23 CALL(sys_execve_wrapper) 23 CALL(sys_execve)
24 CALL(sys_chdir) 24 CALL(sys_chdir)
25 CALL(OBSOLETE(sys_time)) /* used by libc4 */ 25 CALL(OBSOLETE(sys_time)) /* used by libc4 */
26 CALL(sys_mknod) 26 CALL(sys_mknod)
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 4a6e46a9a3d7..ed7941277ca2 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -532,11 +532,6 @@ sys_vfork_wrapper:
532 b sys_vfork 532 b sys_vfork
533ENDPROC(sys_vfork_wrapper) 533ENDPROC(sys_vfork_wrapper)
534 534
535sys_execve_wrapper:
536 add r3, sp, #S_OFF
537 b sys_execve
538ENDPROC(sys_execve_wrapper)
539
540sys_clone_wrapper: 535sys_clone_wrapper:
541 add ip, sp, #S_OFF 536 add ip, sp, #S_OFF
542 str ip, [sp, #4] 537 str ip, [sp, #4]
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c
index c8e729efc187..c2a898aa57aa 100644
--- a/arch/arm/kernel/sys_arm.c
+++ b/arch/arm/kernel/sys_arm.c
@@ -59,26 +59,6 @@ asmlinkage int sys_vfork(struct pt_regs *regs)
59 return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->ARM_sp, regs, 0, NULL, NULL); 59 return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->ARM_sp, regs, 0, NULL, NULL);
60} 60}
61 61
62/* sys_execve() executes a new program.
63 * This is called indirectly via a small wrapper
64 */
65asmlinkage int sys_execve(const char __user *filenamei,
66 const char __user *const __user *argv,
67 const char __user *const __user *envp, struct pt_regs *regs)
68{
69 int error;
70 char * filename;
71
72 filename = getname(filenamei);
73 error = PTR_ERR(filename);
74 if (IS_ERR(filename))
75 goto out;
76 error = do_execve(filename, argv, envp, regs);
77 putname(filename);
78out:
79 return error;
80}
81
82/* 62/*
83 * Since loff_t is a 64 bit type we avoid a lot of ABI hassle 63 * Since loff_t is a 64 bit type we avoid a lot of ABI hassle
84 * with a different argument ordering. 64 * with a different argument ordering.