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 | ||
