aboutsummaryrefslogtreecommitdiffstats
path: root/arch/hexagon
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-02-23 21:50:11 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-02-23 21:50:11 -0500
commit9e2d59ad580d590134285f361a0e80f0e98c0207 (patch)
treef3232be75781484193413f32ec82c21f6d8eb76e /arch/hexagon
parent5ce1a70e2f00f0bce0cab57f798ca354b9496169 (diff)
parent235b80226b986dabcbba844968f7807866bd0bfe (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
Pull signal handling cleanups from Al Viro: "This is the first pile; another one will come a bit later and will contain SYSCALL_DEFINE-related patches. - a bunch of signal-related syscalls (both native and compat) unified. - a bunch of compat syscalls switched to COMPAT_SYSCALL_DEFINE (fixing several potential problems with missing argument validation, while we are at it) - a lot of now-pointless wrappers killed - a couple of architectures (cris and hexagon) forgot to save altstack settings into sigframe, even though they used the (uninitialized) values in sigreturn; fixed. - microblaze fixes for delivery of multiple signals arriving at once - saner set of helpers for signal delivery introduced, several architectures switched to using those." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (143 commits) x86: convert to ksignal sparc: convert to ksignal arm: switch to struct ksignal * passing alpha: pass k_sigaction and siginfo_t using ksignal pointer burying unused conditionals make do_sigaltstack() static arm64: switch to generic old sigaction() (compat-only) arm64: switch to generic compat rt_sigaction() arm64: switch compat to generic old sigsuspend arm64: switch to generic compat rt_sigqueueinfo() arm64: switch to generic compat rt_sigpending() arm64: switch to generic compat rt_sigprocmask() arm64: switch to generic sigaltstack sparc: switch to generic old sigsuspend sparc: COMPAT_SYSCALL_DEFINE does all sign-extension as well as SYSCALL_DEFINE sparc: kill sign-extending wrappers for native syscalls kill sparc32_open() sparc: switch to use of generic old sigaction sparc: switch sys_compat_rt_sigaction() to COMPAT_SYSCALL_DEFINE mips: switch to generic sys_fork() and sys_clone() ...
Diffstat (limited to 'arch/hexagon')
-rw-r--r--arch/hexagon/kernel/signal.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/arch/hexagon/kernel/signal.c b/arch/hexagon/kernel/signal.c
index fe0d1373165d..60fa2ca3202b 100644
--- a/arch/hexagon/kernel/signal.c
+++ b/arch/hexagon/kernel/signal.c
@@ -125,6 +125,7 @@ static int setup_rt_frame(int signr, struct k_sigaction *ka, siginfo_t *info,
125 err |= __put_user(0x5400c004, &frame->tramp[1]); 125 err |= __put_user(0x5400c004, &frame->tramp[1]);
126 err |= setup_sigcontext(regs, &frame->uc.uc_mcontext); 126 err |= setup_sigcontext(regs, &frame->uc.uc_mcontext);
127 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); 127 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
128 err |= __save_altstack(&frame->uc.uc_stack, user_stack_pointer(regs));
128 if (err) 129 if (err)
129 goto sigsegv; 130 goto sigsegv;
130 131
@@ -247,12 +248,6 @@ void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags)
247/* 248/*
248 * Architecture-specific wrappers for signal-related system calls 249 * Architecture-specific wrappers for signal-related system calls
249 */ 250 */
250asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss)
251{
252 struct pt_regs *regs = current_pt_regs();
253
254 return do_sigaltstack(uss, uoss, regs->r29);
255}
256 251
257asmlinkage int sys_rt_sigreturn(void) 252asmlinkage int sys_rt_sigreturn(void)
258{ 253{
@@ -288,14 +283,7 @@ asmlinkage int sys_rt_sigreturn(void)
288 */ 283 */
289 regs->syscall_nr = __NR_rt_sigreturn; 284 regs->syscall_nr = __NR_rt_sigreturn;
290 285
291 /* 286 if (restore_altstack(&frame->uc.uc_stack))
292 * If we were meticulous, we'd only call this if we knew that
293 * we were actually going to use an alternate stack, and we'd
294 * consider any error to be fatal. What we do here, in common
295 * with many other architectures, is call it blindly and only
296 * consider the -EFAULT return case to be proof of a problem.
297 */
298 if (do_sigaltstack(&frame->uc.uc_stack, NULL, pt_psp(regs)) == -EFAULT)
299 goto badframe; 287 goto badframe;
300 288
301 return 0; 289 return 0;