aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2014-03-05 09:35:41 -0500
committerRichard Weinberger <richard@sigma-star.at>2014-08-06 07:04:30 -0400
commit7c4f563507c33ca97dcfbd62dba1e9232575d499 (patch)
treed7af38b4323b9461f80462dbe809a4c42d99e6c1 /arch/mips/kernel
parentc001cd21c930ce393c492565d8722bf951564986 (diff)
mips: Use sigsp()
Use sigsp() instead of the open coded variant. Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r--arch/mips/kernel/signal.c10
-rw-r--r--arch/mips/kernel/signal32.c4
-rw-r--r--arch/mips/kernel/signal_n32.c2
3 files changed, 7 insertions, 9 deletions
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
index da4baac8652c..1d57605e4615 100644
--- a/arch/mips/kernel/signal.c
+++ b/arch/mips/kernel/signal.c
@@ -280,7 +280,7 @@ int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)
280 return err; 280 return err;
281} 281}
282 282
283void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, 283void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs,
284 size_t frame_size) 284 size_t frame_size)
285{ 285{
286 unsigned long sp; 286 unsigned long sp;
@@ -295,9 +295,7 @@ void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
295 */ 295 */
296 sp -= 32; 296 sp -= 32;
297 297
298 /* This is the X/Open sanctioned signal stack switching. */ 298 sp = sigsp(sp, ksig);
299 if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0))
300 sp = current->sas_ss_sp + current->sas_ss_size;
301 299
302 return (void __user *)((sp - frame_size) & (ICACHE_REFILLS_WORKAROUND_WAR ? ~(cpu_icache_line_size()-1) : ALMASK)); 300 return (void __user *)((sp - frame_size) & (ICACHE_REFILLS_WORKAROUND_WAR ? ~(cpu_icache_line_size()-1) : ALMASK));
303} 301}
@@ -434,7 +432,7 @@ static int setup_frame(void *sig_return, struct ksignal *ksig,
434 struct sigframe __user *frame; 432 struct sigframe __user *frame;
435 int err = 0; 433 int err = 0;
436 434
437 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); 435 frame = get_sigframe(ksig, regs, sizeof(*frame));
438 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 436 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
439 return -EFAULT; 437 return -EFAULT;
440 438
@@ -473,7 +471,7 @@ static int setup_rt_frame(void *sig_return, struct ksignal *ksig,
473 struct rt_sigframe __user *frame; 471 struct rt_sigframe __user *frame;
474 int err = 0; 472 int err = 0;
475 473
476 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); 474 frame = get_sigframe(ksig, regs, sizeof(*frame));
477 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 475 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
478 return -EFAULT; 476 return -EFAULT;
479 477
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c
index eb8d0e26404d..d69179c0d49d 100644
--- a/arch/mips/kernel/signal32.c
+++ b/arch/mips/kernel/signal32.c
@@ -496,7 +496,7 @@ static int setup_frame_32(void *sig_return, struct ksignal *ksig,
496 struct sigframe32 __user *frame; 496 struct sigframe32 __user *frame;
497 int err = 0; 497 int err = 0;
498 498
499 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); 499 frame = get_sigframe(ksig, regs, sizeof(*frame));
500 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 500 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
501 return -EFAULT; 501 return -EFAULT;
502 502
@@ -536,7 +536,7 @@ static int setup_rt_frame_32(void *sig_return, struct ksignal *ksig,
536 struct rt_sigframe32 __user *frame; 536 struct rt_sigframe32 __user *frame;
537 int err = 0; 537 int err = 0;
538 538
539 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); 539 frame = get_sigframe(ksig, regs, sizeof(*frame));
540 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 540 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
541 return -EFAULT; 541 return -EFAULT;
542 542
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c
index 7d04f2868ba6..f1d4751eead0 100644
--- a/arch/mips/kernel/signal_n32.c
+++ b/arch/mips/kernel/signal_n32.c
@@ -108,7 +108,7 @@ static int setup_rt_frame_n32(void *sig_return, struct ksignal *ksig,
108 struct rt_sigframe_n32 __user *frame; 108 struct rt_sigframe_n32 __user *frame;
109 int err = 0; 109 int err = 0;
110 110
111 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); 111 frame = get_sigframe(ksig, regs, sizeof(*frame));
112 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 112 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
113 return -EFAULT; 113 return -EFAULT;
114 114