diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-12-23 02:11:49 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-03 18:15:53 -0500 |
commit | 9df794d9275d41012909aaff3cab759e37871974 (patch) | |
tree | ff17244321d7297c347351f4a42016ab9392d5d0 /arch/cris | |
parent | d970e42897525adc836207b44ef64347e59d613e (diff) |
cris: don't leave ->uc_stack unitialized - we'll use its contents on sigreturn
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/cris')
-rw-r--r-- | arch/cris/arch-v10/kernel/signal.c | 2 | ||||
-rw-r--r-- | arch/cris/arch-v32/kernel/signal.c | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/arch/cris/arch-v10/kernel/signal.c b/arch/cris/arch-v10/kernel/signal.c index 187237f655e6..9570946a6958 100644 --- a/arch/cris/arch-v10/kernel/signal.c +++ b/arch/cris/arch-v10/kernel/signal.c | |||
@@ -356,6 +356,8 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
356 | 356 | ||
357 | err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); | 357 | err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); |
358 | 358 | ||
359 | err |= __save_altstack(&frame->uc.uc_stack, rdusp()); | ||
360 | |||
359 | if (err) | 361 | if (err) |
360 | goto give_sigsegv; | 362 | goto give_sigsegv; |
361 | 363 | ||
diff --git a/arch/cris/arch-v32/kernel/signal.c b/arch/cris/arch-v32/kernel/signal.c index 168b6958e2b8..1f29c692b7ef 100644 --- a/arch/cris/arch-v32/kernel/signal.c +++ b/arch/cris/arch-v32/kernel/signal.c | |||
@@ -365,6 +365,7 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
365 | err |= __clear_user(&frame->uc, offsetof(struct ucontext, uc_mcontext)); | 365 | err |= __clear_user(&frame->uc, offsetof(struct ucontext, uc_mcontext)); |
366 | err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, set->sig[0]); | 366 | err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, set->sig[0]); |
367 | err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); | 367 | err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); |
368 | err |= __save_altstack(&frame->uc.uc_stack, rdusp()); | ||
368 | 369 | ||
369 | if (err) | 370 | if (err) |
370 | goto give_sigsegv; | 371 | goto give_sigsegv; |