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