diff options
Diffstat (limited to 'arch/c6x/kernel/signal.c')
| -rw-r--r-- | arch/c6x/kernel/signal.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/arch/c6x/kernel/signal.c b/arch/c6x/kernel/signal.c index 304f675826e9..3b5a05099989 100644 --- a/arch/c6x/kernel/signal.c +++ b/arch/c6x/kernel/signal.c | |||
| @@ -85,10 +85,7 @@ asmlinkage int do_rt_sigreturn(struct pt_regs *regs) | |||
| 85 | goto badframe; | 85 | goto badframe; |
| 86 | 86 | ||
| 87 | sigdelsetmask(&set, ~_BLOCKABLE); | 87 | sigdelsetmask(&set, ~_BLOCKABLE); |
| 88 | spin_lock_irq(¤t->sighand->siglock); | 88 | set_current_blocked(&set); |
| 89 | current->blocked = set; | ||
| 90 | recalc_sigpending(); | ||
| 91 | spin_unlock_irq(¤t->sighand->siglock); | ||
| 92 | 89 | ||
| 93 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) | 90 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) |
| 94 | goto badframe; | 91 | goto badframe; |
| @@ -279,15 +276,8 @@ static int handle_signal(int sig, | |||
| 279 | 276 | ||
| 280 | /* Set up the stack frame */ | 277 | /* Set up the stack frame */ |
| 281 | ret = setup_rt_frame(sig, ka, info, oldset, regs); | 278 | ret = setup_rt_frame(sig, ka, info, oldset, regs); |
| 282 | if (ret == 0) { | 279 | if (ret == 0) |
| 283 | spin_lock_irq(¤t->sighand->siglock); | 280 | block_sigmask(ka, sig); |
| 284 | sigorsets(¤t->blocked, ¤t->blocked, | ||
| 285 | &ka->sa.sa_mask); | ||
| 286 | if (!(ka->sa.sa_flags & SA_NODEFER)) | ||
| 287 | sigaddset(¤t->blocked, sig); | ||
| 288 | recalc_sigpending(); | ||
| 289 | spin_unlock_irq(¤t->sighand->siglock); | ||
| 290 | } | ||
| 291 | 281 | ||
| 292 | return ret; | 282 | return ret; |
| 293 | } | 283 | } |
