diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-10-10 23:12:01 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-10-12 13:35:23 -0400 |
commit | 5522be6a4624a5f505555569e4d9cee946630686 (patch) | |
tree | 27a240cfb4dd0966be2f819319ca44097950878d | |
parent | 9fff2fa0db911b0b75ec1f9bec72460c0a676ef5 (diff) |
alpha: switch to saner kernel_execve() semantics
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | arch/alpha/Kconfig | 1 | ||||
-rw-r--r-- | arch/alpha/include/asm/unistd.h | 1 | ||||
-rw-r--r-- | arch/alpha/kernel/entry.S | 17 |
3 files changed, 2 insertions, 17 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 7da91246e279..7a08cfb80ee8 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig | |||
@@ -21,6 +21,7 @@ config ALPHA | |||
21 | select GENERIC_STRNCPY_FROM_USER | 21 | select GENERIC_STRNCPY_FROM_USER |
22 | select GENERIC_STRNLEN_USER | 22 | select GENERIC_STRNLEN_USER |
23 | select GENERIC_KERNEL_THREAD | 23 | select GENERIC_KERNEL_THREAD |
24 | select GENERIC_KERNEL_EXECVE | ||
24 | help | 25 | help |
25 | The Alpha is a 64-bit general-purpose processor designed and | 26 | The Alpha is a 64-bit general-purpose processor designed and |
26 | marketed by the Digital Equipment Corporation of blessed memory, | 27 | marketed by the Digital Equipment Corporation of blessed memory, |
diff --git a/arch/alpha/include/asm/unistd.h b/arch/alpha/include/asm/unistd.h index 3cb6c1188984..7826e227e4d0 100644 --- a/arch/alpha/include/asm/unistd.h +++ b/arch/alpha/include/asm/unistd.h | |||
@@ -482,7 +482,6 @@ | |||
482 | #define __ARCH_WANT_SYS_SIGPENDING | 482 | #define __ARCH_WANT_SYS_SIGPENDING |
483 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 483 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |
484 | #define __ARCH_WANT_SYS_EXECVE | 484 | #define __ARCH_WANT_SYS_EXECVE |
485 | #define __ARCH_WANT_KERNEL_EXECVE | ||
486 | 485 | ||
487 | /* "Conditional" syscalls. What we want is | 486 | /* "Conditional" syscalls. What we want is |
488 | 487 | ||
diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S index 16e074f9e581..a7607832dd4f 100644 --- a/arch/alpha/kernel/entry.S +++ b/arch/alpha/kernel/entry.S | |||
@@ -603,24 +603,9 @@ ret_from_kernel_thread: | |||
603 | mov $9, $27 | 603 | mov $9, $27 |
604 | mov $10, $16 | 604 | mov $10, $16 |
605 | jsr $26, ($9) | 605 | jsr $26, ($9) |
606 | ldgp $gp, 0($26) | ||
607 | mov $0, $16 | ||
608 | mov $31, $26 | ||
609 | jmp $31, sys_exit | ||
610 | .end ret_from_kernel_thread | ||
611 | |||
612 | .globl ret_from_kernel_execve | ||
613 | .align 4 | ||
614 | .ent ret_from_kernel_execve | ||
615 | ret_from_kernel_execve: | ||
616 | mov $16, $sp | ||
617 | /* Avoid the HAE being gratuitously wrong, to avoid restoring it. */ | ||
618 | ldq $2, alpha_mv+HAE_CACHE | ||
619 | stq $2, 152($sp) /* HAE */ | ||
620 | mov $31, $19 /* to disable syscall restarts */ | 606 | mov $31, $19 /* to disable syscall restarts */ |
621 | br $31, ret_to_user | 607 | br $31, ret_to_user |
622 | 608 | .end ret_from_kernel_thread | |
623 | .end ret_from_kernel_execve | ||
624 | 609 | ||
625 | 610 | ||
626 | /* | 611 | /* |