From 96393e780971fd5e76178300c636f7ef304c25a3 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Wed, 3 Oct 2012 23:44:44 -0400 Subject: [PATCH] --- yaml --- r: 340268 b: refs/heads/master c: 4e5ed85ab5f1c9973588d7226c2894016059d9f6 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/parisc/include/asm/unistd.h | 1 + trunk/arch/parisc/kernel/entry.S | 28 ++++++-------------------- trunk/arch/parisc/kernel/process.c | 10 --------- 4 files changed, 8 insertions(+), 33 deletions(-) diff --git a/[refs] b/[refs] index a37b59b21b44..f74b0150413c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a44e060fc523c379341e35a981c09c3953cf4ba4 +refs/heads/master: 4e5ed85ab5f1c9973588d7226c2894016059d9f6 diff --git a/trunk/arch/parisc/include/asm/unistd.h b/trunk/arch/parisc/include/asm/unistd.h index d61de64f990a..447e03c48232 100644 --- a/trunk/arch/parisc/include/asm/unistd.h +++ b/trunk/arch/parisc/include/asm/unistd.h @@ -995,6 +995,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ #define __ARCH_WANT_SYS_RT_SIGACTION #define __ARCH_WANT_SYS_RT_SIGSUSPEND #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND +#define __ARCH_WANT_KERNEL_EXECVE #endif /* __ASSEMBLY__ */ diff --git a/trunk/arch/parisc/kernel/entry.S b/trunk/arch/parisc/kernel/entry.S index 18d05e7373b5..a26917da9b2f 100644 --- a/trunk/arch/parisc/kernel/entry.S +++ b/trunk/arch/parisc/kernel/entry.S @@ -741,28 +741,12 @@ ENTRY(ret_from_kernel_thread) ldi 0, %r26 ENDPROC(ret_from_kernel_thread) - .import sys_execve, code -ENTRY(__execve) - copy %r2, %r15 - copy %r30, %r16 - ldo PT_SZ_ALGN(%r30), %r30 - STREG %r26, PT_GR26(%r16) - STREG %r25, PT_GR25(%r16) - STREG %r24, PT_GR24(%r16) -#ifdef CONFIG_64BIT - ldo -16(%r30),%r29 /* Reference param save area */ -#endif - BL sys_execve, %r2 - copy %r16, %r26 - - cmpib,=,n 0,%r28,intr_return /* forward */ - - /* yes, this will trap and die. */ - copy %r15, %r2 - copy %r16, %r30 - bv %r0(%r2) - nop -ENDPROC(__execve) +ENTRY(ret_from_kernel_execve) + mfctl %cr30, %r1 + ldo THREAD_SZ_ALGN(%r1), %r30 + b intr_return /* forward */ + copy %r26,%r16 /* pt_regs into r16 */ +ENDPROC(ret_from_kernel_execve) /* diff --git a/trunk/arch/parisc/kernel/process.c b/trunk/arch/parisc/kernel/process.c index b7b4126774e0..f3f6408bfb4f 100644 --- a/trunk/arch/parisc/kernel/process.c +++ b/trunk/arch/parisc/kernel/process.c @@ -337,16 +337,6 @@ asmlinkage int sys_execve(struct pt_regs *regs) return error; } -extern int __execve(const char *filename, - const char *const argv[], - const char *const envp[], struct task_struct *task); -int kernel_execve(const char *filename, - const char *const argv[], - const char *const envp[]) -{ - return __execve(filename, argv, envp, current); -} - unsigned long get_wchan(struct task_struct *p) {