diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-16 12:06:34 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-10-01 00:44:44 -0400 |
commit | d878d6dacee2c862f02da20f7fa3e2c0e8820e71 (patch) | |
tree | c594e7cc3d49e2af55f6fe9706a2fc618dc3f150 /arch/m68k/kernel/process.c | |
parent | 533e6903bea0440816a0f517b0845ccea4cc7917 (diff) | |
download | op-kernel-dev-d878d6dacee2c862f02da20f7fa3e2c0e8820e71.zip op-kernel-dev-d878d6dacee2c862f02da20f7fa3e2c0e8820e71.tar.gz |
m68k: switch to generic sys_execve()/kernel_execve()
The tricky part here is that task_pt_regs() on m68k works *only* for
process inside do_signal(). However, we need something much simpler -
pt_regs of a process inside do_signal() may be at different offsets
from the stack bottom, depending on the way we'd entered the kernel,
but for a task inside sys_execve() it *is* at constant offset.
Moreover, for a kernel thread about to become a userland process the
same location is also fine - setting sp to that will leave the kernel
stack pointer at the very bottom of the kernel stack when we finally
switch to userland.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/m68k/kernel/process.c')
-rw-r--r-- | arch/m68k/kernel/process.c | 20 |
1 files changed, 0 insertions, 20 deletions
diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c index b3d4760..4e54b4c 100644 --- a/arch/m68k/kernel/process.c +++ b/arch/m68k/kernel/process.c @@ -298,26 +298,6 @@ int dump_fpu (struct pt_regs *regs, struct user_m68kfp_struct *fpu) EXPORT_SYMBOL(dump_fpu); #endif /* CONFIG_FPU */ -/* - * sys_execve() executes a new program. - */ -asmlinkage int sys_execve(const char __user *name, - const char __user *const __user *argv, - const char __user *const __user *envp) -{ - int error; - char * filename; - struct pt_regs *regs = (struct pt_regs *) &name; - - filename = getname(name); - error = PTR_ERR(filename); - if (IS_ERR(filename)) - return error; - error = do_execve(filename, argv, envp, regs); - putname(filename); - return error; -} - unsigned long get_wchan(struct task_struct *p) { unsigned long fp, pc; |