diff options
Diffstat (limited to 'arch/mips/kernel/signal32.c')
-rw-r--r-- | arch/mips/kernel/signal32.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c index 06b5da392e24..ac3b8d89aae5 100644 --- a/arch/mips/kernel/signal32.c +++ b/arch/mips/kernel/signal32.c | |||
@@ -290,11 +290,8 @@ asmlinkage int sys32_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
290 | return -EFAULT; | 290 | return -EFAULT; |
291 | sigdelsetmask(&newset, ~_BLOCKABLE); | 291 | sigdelsetmask(&newset, ~_BLOCKABLE); |
292 | 292 | ||
293 | spin_lock_irq(¤t->sighand->siglock); | ||
294 | current->saved_sigmask = current->blocked; | 293 | current->saved_sigmask = current->blocked; |
295 | current->blocked = newset; | 294 | set_current_blocked(&newset); |
296 | recalc_sigpending(); | ||
297 | spin_unlock_irq(¤t->sighand->siglock); | ||
298 | 295 | ||
299 | current->state = TASK_INTERRUPTIBLE; | 296 | current->state = TASK_INTERRUPTIBLE; |
300 | schedule(); | 297 | schedule(); |
@@ -318,11 +315,8 @@ asmlinkage int sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) | |||
318 | return -EFAULT; | 315 | return -EFAULT; |
319 | sigdelsetmask(&newset, ~_BLOCKABLE); | 316 | sigdelsetmask(&newset, ~_BLOCKABLE); |
320 | 317 | ||
321 | spin_lock_irq(¤t->sighand->siglock); | ||
322 | current->saved_sigmask = current->blocked; | 318 | current->saved_sigmask = current->blocked; |
323 | current->blocked = newset; | 319 | set_current_blocked(&newset); |
324 | recalc_sigpending(); | ||
325 | spin_unlock_irq(¤t->sighand->siglock); | ||
326 | 320 | ||
327 | current->state = TASK_INTERRUPTIBLE; | 321 | current->state = TASK_INTERRUPTIBLE; |
328 | schedule(); | 322 | schedule(); |
@@ -488,10 +482,7 @@ asmlinkage void sys32_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
488 | goto badframe; | 482 | goto badframe; |
489 | 483 | ||
490 | sigdelsetmask(&blocked, ~_BLOCKABLE); | 484 | sigdelsetmask(&blocked, ~_BLOCKABLE); |
491 | spin_lock_irq(¤t->sighand->siglock); | 485 | set_current_blocked(&blocked); |
492 | current->blocked = blocked; | ||
493 | recalc_sigpending(); | ||
494 | spin_unlock_irq(¤t->sighand->siglock); | ||
495 | 486 | ||
496 | sig = restore_sigcontext32(®s, &frame->sf_sc); | 487 | sig = restore_sigcontext32(®s, &frame->sf_sc); |
497 | if (sig < 0) | 488 | if (sig < 0) |
@@ -529,10 +520,7 @@ asmlinkage void sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) | |||
529 | goto badframe; | 520 | goto badframe; |
530 | 521 | ||
531 | sigdelsetmask(&set, ~_BLOCKABLE); | 522 | sigdelsetmask(&set, ~_BLOCKABLE); |
532 | spin_lock_irq(¤t->sighand->siglock); | 523 | set_current_blocked(&set); |
533 | current->blocked = set; | ||
534 | recalc_sigpending(); | ||
535 | spin_unlock_irq(¤t->sighand->siglock); | ||
536 | 524 | ||
537 | sig = restore_sigcontext32(®s, &frame->rs_uc.uc_mcontext); | 525 | sig = restore_sigcontext32(®s, &frame->rs_uc.uc_mcontext); |
538 | if (sig < 0) | 526 | if (sig < 0) |