diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-08-02 15:05:11 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-30 22:53:32 -0400 |
commit | 6783eaa2e1253fbcbe2c2f6bb4c843abf1343caf (patch) | |
tree | 457e7b1d54396ed31ba92b7fe7024723d26ba565 /arch/x86/ia32 | |
parent | 7076aada1040de4ed79a5977dbabdb5e5ea5e249 (diff) |
x86, um/x86: switch to generic sys_execve and kernel_execve
32bit wrapper is lost on that; 64bit one is *not*, since
we need to arrange for full pt_regs on stack when we call
sys_execve() and we need to load callee-saved ones from
there afterwards.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/x86/ia32')
-rw-r--r-- | arch/x86/ia32/ia32entry.S | 2 | ||||
-rw-r--r-- | arch/x86/ia32/sys_ia32.c | 15 |
2 files changed, 1 insertions, 16 deletions
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 20e5f7ba0e6b..e75f941bd2b2 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
@@ -459,7 +459,7 @@ GLOBAL(\label) | |||
459 | PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn, %rdi | 459 | PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn, %rdi |
460 | PTREGSCALL stub32_sigreturn, sys32_sigreturn, %rdi | 460 | PTREGSCALL stub32_sigreturn, sys32_sigreturn, %rdi |
461 | PTREGSCALL stub32_sigaltstack, sys32_sigaltstack, %rdx | 461 | PTREGSCALL stub32_sigaltstack, sys32_sigaltstack, %rdx |
462 | PTREGSCALL stub32_execve, sys32_execve, %rcx | 462 | PTREGSCALL stub32_execve, compat_sys_execve, %rcx |
463 | PTREGSCALL stub32_fork, sys_fork, %rdi | 463 | PTREGSCALL stub32_fork, sys_fork, %rdi |
464 | PTREGSCALL stub32_clone, sys32_clone, %rdx | 464 | PTREGSCALL stub32_clone, sys32_clone, %rdx |
465 | PTREGSCALL stub32_vfork, sys_vfork, %rdi | 465 | PTREGSCALL stub32_vfork, sys_vfork, %rdi |
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c index 4540bece0946..6b31144589d0 100644 --- a/arch/x86/ia32/sys_ia32.c +++ b/arch/x86/ia32/sys_ia32.c | |||
@@ -385,21 +385,6 @@ asmlinkage long sys32_sendfile(int out_fd, int in_fd, | |||
385 | return ret; | 385 | return ret; |
386 | } | 386 | } |
387 | 387 | ||
388 | asmlinkage long sys32_execve(const char __user *name, compat_uptr_t __user *argv, | ||
389 | compat_uptr_t __user *envp, struct pt_regs *regs) | ||
390 | { | ||
391 | long error; | ||
392 | char *filename; | ||
393 | |||
394 | filename = getname(name); | ||
395 | error = PTR_ERR(filename); | ||
396 | if (IS_ERR(filename)) | ||
397 | return error; | ||
398 | error = compat_do_execve(filename, argv, envp, regs); | ||
399 | putname(filename); | ||
400 | return error; | ||
401 | } | ||
402 | |||
403 | asmlinkage long sys32_clone(unsigned int clone_flags, unsigned int newsp, | 388 | asmlinkage long sys32_clone(unsigned int clone_flags, unsigned int newsp, |
404 | struct pt_regs *regs) | 389 | struct pt_regs *regs) |
405 | { | 390 | { |