diff options
Diffstat (limited to 'arch/cris')
-rw-r--r-- | arch/cris/arch-v10/kernel/signal.c | 22 | ||||
-rw-r--r-- | arch/cris/arch-v32/kernel/signal.c | 25 |
2 files changed, 9 insertions, 38 deletions
diff --git a/arch/cris/arch-v10/kernel/signal.c b/arch/cris/arch-v10/kernel/signal.c index 170f4970d590..df40fa80480f 100644 --- a/arch/cris/arch-v10/kernel/signal.c +++ b/arch/cris/arch-v10/kernel/signal.c | |||
@@ -177,10 +177,7 @@ asmlinkage int sys_sigreturn(long r10, long r11, long r12, long r13, long mof, | |||
177 | goto badframe; | 177 | goto badframe; |
178 | 178 | ||
179 | sigdelsetmask(&set, ~_BLOCKABLE); | 179 | sigdelsetmask(&set, ~_BLOCKABLE); |
180 | spin_lock_irq(¤t->sighand->siglock); | 180 | set_current_blocked(&set); |
181 | current->blocked = set; | ||
182 | recalc_sigpending(); | ||
183 | spin_unlock_irq(¤t->sighand->siglock); | ||
184 | 181 | ||
185 | if (restore_sigcontext(regs, &frame->sc)) | 182 | if (restore_sigcontext(regs, &frame->sc)) |
186 | goto badframe; | 183 | goto badframe; |
@@ -216,10 +213,7 @@ asmlinkage int sys_rt_sigreturn(long r10, long r11, long r12, long r13, | |||
216 | goto badframe; | 213 | goto badframe; |
217 | 214 | ||
218 | sigdelsetmask(&set, ~_BLOCKABLE); | 215 | sigdelsetmask(&set, ~_BLOCKABLE); |
219 | spin_lock_irq(¤t->sighand->siglock); | 216 | set_current_blocked(&set); |
220 | current->blocked = set; | ||
221 | recalc_sigpending(); | ||
222 | spin_unlock_irq(¤t->sighand->siglock); | ||
223 | 217 | ||
224 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) | 218 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) |
225 | goto badframe; | 219 | goto badframe; |
@@ -461,15 +455,9 @@ static inline int handle_signal(int canrestart, unsigned long sig, | |||
461 | else | 455 | else |
462 | ret = setup_frame(sig, ka, oldset, regs); | 456 | ret = setup_frame(sig, ka, oldset, regs); |
463 | 457 | ||
464 | if (ret == 0) { | 458 | if (ret == 0) |
465 | spin_lock_irq(¤t->sighand->siglock); | 459 | block_sigmask(ka, sig); |
466 | sigorsets(¤t->blocked, ¤t->blocked, | 460 | |
467 | &ka->sa.sa_mask); | ||
468 | if (!(ka->sa.sa_flags & SA_NODEFER)) | ||
469 | sigaddset(¤t->blocked, sig); | ||
470 | recalc_sigpending(); | ||
471 | spin_unlock_irq(¤t->sighand->siglock); | ||
472 | } | ||
473 | return ret; | 461 | return ret; |
474 | } | 462 | } |
475 | 463 | ||
diff --git a/arch/cris/arch-v32/kernel/signal.c b/arch/cris/arch-v32/kernel/signal.c index e09083208cb6..b0a6cf4f2cad 100644 --- a/arch/cris/arch-v32/kernel/signal.c +++ b/arch/cris/arch-v32/kernel/signal.c | |||
@@ -168,12 +168,7 @@ sys_sigreturn(long r10, long r11, long r12, long r13, long mof, long srp, | |||
168 | goto badframe; | 168 | goto badframe; |
169 | 169 | ||
170 | sigdelsetmask(&set, ~_BLOCKABLE); | 170 | sigdelsetmask(&set, ~_BLOCKABLE); |
171 | spin_lock_irq(¤t->sighand->siglock); | 171 | set_current_blocked(&set); |
172 | |||
173 | current->blocked = set; | ||
174 | |||
175 | recalc_sigpending(); | ||
176 | spin_unlock_irq(¤t->sighand->siglock); | ||
177 | 172 | ||
178 | if (restore_sigcontext(regs, &frame->sc)) | 173 | if (restore_sigcontext(regs, &frame->sc)) |
179 | goto badframe; | 174 | goto badframe; |
@@ -214,12 +209,7 @@ sys_rt_sigreturn(long r10, long r11, long r12, long r13, long mof, long srp, | |||
214 | goto badframe; | 209 | goto badframe; |
215 | 210 | ||
216 | sigdelsetmask(&set, ~_BLOCKABLE); | 211 | sigdelsetmask(&set, ~_BLOCKABLE); |
217 | spin_lock_irq(¤t->sighand->siglock); | 212 | set_current_blocked(&set); |
218 | |||
219 | current->blocked = set; | ||
220 | |||
221 | recalc_sigpending(); | ||
222 | spin_unlock_irq(¤t->sighand->siglock); | ||
223 | 213 | ||
224 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) | 214 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) |
225 | goto badframe; | 215 | goto badframe; |
@@ -507,15 +497,8 @@ handle_signal(int canrestart, unsigned long sig, | |||
507 | if (ka->sa.sa_flags & SA_ONESHOT) | 497 | if (ka->sa.sa_flags & SA_ONESHOT) |
508 | ka->sa.sa_handler = SIG_DFL; | 498 | ka->sa.sa_handler = SIG_DFL; |
509 | 499 | ||
510 | if (ret == 0) { | 500 | if (ret == 0) |
511 | spin_lock_irq(¤t->sighand->siglock); | 501 | block_sigmask(ka, sig); |
512 | sigorsets(¤t->blocked, ¤t->blocked, | ||
513 | &ka->sa.sa_mask); | ||
514 | if (!(ka->sa.sa_flags & SA_NODEFER)) | ||
515 | sigaddset(¤t->blocked, sig); | ||
516 | recalc_sigpending(); | ||
517 | spin_unlock_irq(¤t->sighand->siglock); | ||
518 | } | ||
519 | 502 | ||
520 | return ret; | 503 | return ret; |
521 | } | 504 | } |