diff options
author | Richard Weinberger <richard@nod.at> | 2014-03-05 09:35:41 -0500 |
---|---|---|
committer | Richard Weinberger <richard@sigma-star.at> | 2014-08-06 07:04:30 -0400 |
commit | 7c4f563507c33ca97dcfbd62dba1e9232575d499 (patch) | |
tree | d7af38b4323b9461f80462dbe809a4c42d99e6c1 | |
parent | c001cd21c930ce393c492565d8722bf951564986 (diff) |
mips: Use sigsp()
Use sigsp() instead of the open coded variant.
Signed-off-by: Richard Weinberger <richard@nod.at>
-rw-r--r-- | arch/mips/kernel/signal.c | 10 | ||||
-rw-r--r-- | arch/mips/kernel/signal32.c | 4 | ||||
-rw-r--r-- | arch/mips/kernel/signal_n32.c | 2 |
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 | ||
283 | void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, | 283 | void __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 | ||