aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/m32r/kernel/signal.c12
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 */
164static inline void __user * 164static inline void __user *
165get_sigframe(struct k_sigaction *ka, unsigned long sp, size_t frame_size) 165get_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
176static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, 170static 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;