aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-12-14 15:25:43 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2012-12-19 18:07:42 -0500
commit50ececcfa7d1acee085b2c518cad495062db6379 (patch)
tree3e947b8208e40f34a867be42d0a3908f53844a01
parentc40702c49faef05ae324f121d8b3e215244ee152 (diff)
alpha: switch to generic sigaltstack
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--arch/alpha/Kconfig1
-rw-r--r--arch/alpha/kernel/signal.c10
2 files changed, 2 insertions, 9 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 7e3710c0cce5..9d5904cc7712 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -22,6 +22,7 @@ config ALPHA
22 select GENERIC_STRNLEN_USER 22 select GENERIC_STRNLEN_USER
23 select HAVE_MOD_ARCH_SPECIFIC 23 select HAVE_MOD_ARCH_SPECIFIC
24 select MODULES_USE_ELF_RELA 24 select MODULES_USE_ELF_RELA
25 select GENERIC_SIGALTSTACK
25 help 26 help
26 The Alpha is a 64-bit general-purpose processor designed and 27 The Alpha is a 64-bit general-purpose processor designed and
27 marketed by the Digital Equipment Corporation of blessed memory, 28 marketed by the Digital Equipment Corporation of blessed memory,
diff --git a/arch/alpha/kernel/signal.c b/arch/alpha/kernel/signal.c
index 336393c9c11f..02d02c047f17 100644
--- a/arch/alpha/kernel/signal.c
+++ b/arch/alpha/kernel/signal.c
@@ -122,12 +122,6 @@ SYSCALL_DEFINE1(sigsuspend, old_sigset_t, mask)
122 return sigsuspend(&blocked); 122 return sigsuspend(&blocked);
123} 123}
124 124
125asmlinkage int
126sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss)
127{
128 return do_sigaltstack(uss, uoss, rdusp());
129}
130
131/* 125/*
132 * Do a signal return; undo the signal stack. 126 * Do a signal return; undo the signal stack.
133 */ 127 */
@@ -418,9 +412,7 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
418 err |= __put_user(0, &frame->uc.uc_flags); 412 err |= __put_user(0, &frame->uc.uc_flags);
419 err |= __put_user(0, &frame->uc.uc_link); 413 err |= __put_user(0, &frame->uc.uc_link);
420 err |= __put_user(set->sig[0], &frame->uc.uc_osf_sigmask); 414 err |= __put_user(set->sig[0], &frame->uc.uc_osf_sigmask);
421 err |= __put_user(current->sas_ss_sp, &frame->uc.uc_stack.ss_sp); 415 err |= __save_altstack(&frame->uc.uc_stack, oldsp);
422 err |= __put_user(sas_ss_flags(oldsp), &frame->uc.uc_stack.ss_flags);
423 err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size);
424 err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, 416 err |= setup_sigcontext(&frame->uc.uc_mcontext, regs,
425 set->sig[0], oldsp); 417 set->sig[0], oldsp);
426 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); 418 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));