aboutsummaryrefslogtreecommitdiffstats
path: root/arch/cris/arch-v10
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2014-03-05 08:54:10 -0500
committerRichard Weinberger <richard@sigma-star.at>2014-08-06 07:04:07 -0400
commit8215ade82d699be33a2fa545bceca29c95fcfa47 (patch)
tree860e603c37024172dd05a9d169f2c7fe1851d2c4 /arch/cris/arch-v10
parent615869e40bc0f84bc73d43e83ab88a7d4b66759f (diff)
cris: Use sigsp()
Use sigsp() instead of the open coded variant. Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/cris/arch-v10')
-rw-r--r--arch/cris/arch-v10/kernel/signal.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/arch/cris/arch-v10/kernel/signal.c b/arch/cris/arch-v10/kernel/signal.c
index 12aac1fb48df..9b32d338838b 100644
--- a/arch/cris/arch-v10/kernel/signal.c
+++ b/arch/cris/arch-v10/kernel/signal.c
@@ -203,15 +203,9 @@ static int setup_sigcontext(struct sigcontext __user *sc,
203 * - usually on the stack. */ 203 * - usually on the stack. */
204 204
205static inline void __user * 205static inline void __user *
206get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size) 206get_sigframe(struct ksignal *ksig, size_t frame_size)
207{ 207{
208 unsigned long sp = rdusp(); 208 unsigned long sp = sigsp(rdusp(), ksig);
209
210 /* This is the X/Open sanctioned signal stack switching. */
211 if (ka->sa.sa_flags & SA_ONSTACK) {
212 if (! on_sig_stack(sp))
213 sp = current->sas_ss_sp + current->sas_ss_size;
214 }
215 209
216 /* make sure the frame is dword-aligned */ 210 /* make sure the frame is dword-aligned */
217 211
@@ -235,7 +229,7 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set,
235 unsigned long return_ip; 229 unsigned long return_ip;
236 int err = 0; 230 int err = 0;
237 231
238 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); 232 frame = get_sigframe(ksig, sizeof(*frame));
239 233
240 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) 234 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
241 return -EFAULT; 235 return -EFAULT;
@@ -287,7 +281,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
287 unsigned long return_ip; 281 unsigned long return_ip;
288 int err = 0; 282 int err = 0;
289 283
290 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); 284 frame = get_sigframe(ksig, sizeof(*frame));
291 285
292 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) 286 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
293 return -EFAULT; 287 return -EFAULT;