diff options
-rw-r--r-- | arch/m32r/kernel/signal.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c index cce3fd3ae923..95408b8f130a 100644 --- a/arch/m32r/kernel/signal.c +++ b/arch/m32r/kernel/signal.c | |||
@@ -162,15 +162,9 @@ setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, | |||
162 | * Determine which stack to use.. | 162 | * Determine which stack to use.. |
163 | */ | 163 | */ |
164 | static inline void __user * | 164 | static inline void __user * |
165 | get_sigframe(struct k_sigaction *ka, unsigned long sp, size_t frame_size) | 165 | get_sigframe(struct ksignal *ksig, unsigned long sp, size_t frame_size) |
166 | { | 166 | { |
167 | /* This is the X/Open sanctioned signal stack switching. */ | 167 | return (void __user *)((sigsp(sp, ksig) - frame_size) & -8ul); |
168 | if (ka->sa.sa_flags & SA_ONSTACK) { | ||
169 | if (sas_ss_flags(sp) == 0) | ||
170 | sp = current->sas_ss_sp + current->sas_ss_size; | ||
171 | } | ||
172 | |||
173 | return (void __user *)((sp - frame_size) & -8ul); | ||
174 | } | 168 | } |
175 | 169 | ||
176 | static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, | 170 | static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, |
@@ -180,7 +174,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, | |||
180 | int err = 0; | 174 | int err = 0; |
181 | int signal, sig = ksig->sig; | 175 | int signal, sig = ksig->sig; |
182 | 176 | ||
183 | frame = get_sigframe(&ksig->ka, regs->spu, sizeof(*frame)); | 177 | frame = get_sigframe(ksig, regs->spu, sizeof(*frame)); |
184 | 178 | ||
185 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) | 179 | if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
186 | return -EFAULT; | 180 | return -EFAULT; |