diff options
author | Richard Weinberger <richard@nod.at> | 2014-03-05 15:28:59 +0100 |
---|---|---|
committer | Richard Weinberger <richard@sigma-star.at> | 2014-08-06 13:04:09 +0200 |
commit | 36992f2893d224add9a1e4b9114aa04f4640853b (patch) | |
tree | ad42142fe6f727a5468183fbdc4cb216b425e732 /arch/m68k/kernel | |
parent | 5c0806faf1a3837db38542c3bae085f23beac7f1 (diff) | |
download | linux-stable-36992f2893d224add9a1e4b9114aa04f4640853b.tar.gz linux-stable-36992f2893d224add9a1e4b9114aa04f4640853b.tar.bz2 linux-stable-36992f2893d224add9a1e4b9114aa04f4640853b.zip |
m68k: Use sigsp()
Use sigsp() instead of the open coded variant.
Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/m68k/kernel')
-rw-r--r-- | arch/m68k/kernel/signal.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/arch/m68k/kernel/signal.c b/arch/m68k/kernel/signal.c index c8e6fa865996..967a8b7e1527 100644 --- a/arch/m68k/kernel/signal.c +++ b/arch/m68k/kernel/signal.c @@ -835,18 +835,10 @@ static inline int rt_setup_ucontext(struct ucontext __user *uc, struct pt_regs * } static inline void __user * -get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size) +get_sigframe(struct ksignal *ksig, size_t frame_size) { - unsigned long usp; - - /* Default to using normal stack. */ - usp = rdusp(); + unsigned long usp = sigsp(rdusp(), ksig); - /* This is the X/Open sanctioned signal stack switching. */ - if (ka->sa.sa_flags & SA_ONSTACK) { - if (!sas_ss_flags(usp)) - usp = current->sas_ss_sp + current->sas_ss_size; - } return (void __user *)((usp - frame_size) & -8UL); } @@ -866,7 +858,7 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set, return -EFAULT; } - frame = get_sigframe(&ksig->ka, regs, sizeof(*frame) + fsize); + frame = get_sigframe(ksig, sizeof(*frame) + fsize); if (fsize) err |= copy_to_user (frame + 1, regs + 1, fsize); @@ -951,7 +943,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, return -EFAULT; } - frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); + frame = get_sigframe(ksig, sizeof(*frame)); if (fsize) err |= copy_to_user (&frame->uc.uc_extra, regs + 1, fsize); |