diff options
Diffstat (limited to 'arch/powerpc/kernel/signal_32.c')
-rw-r--r-- | arch/powerpc/kernel/signal_32.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index 836a5a19eb2c..e061ef5dd449 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c | |||
@@ -242,12 +242,13 @@ static inline int restore_general_regs(struct pt_regs *regs, | |||
242 | */ | 242 | */ |
243 | long sys_sigsuspend(old_sigset_t mask) | 243 | long sys_sigsuspend(old_sigset_t mask) |
244 | { | 244 | { |
245 | mask &= _BLOCKABLE; | 245 | sigset_t blocked; |
246 | spin_lock_irq(¤t->sighand->siglock); | 246 | |
247 | current->saved_sigmask = current->blocked; | 247 | current->saved_sigmask = current->blocked; |
248 | siginitset(¤t->blocked, mask); | 248 | |
249 | recalc_sigpending(); | 249 | mask &= _BLOCKABLE; |
250 | spin_unlock_irq(¤t->sighand->siglock); | 250 | siginitset(&blocked, mask); |
251 | set_current_blocked(&blocked); | ||
251 | 252 | ||
252 | current->state = TASK_INTERRUPTIBLE; | 253 | current->state = TASK_INTERRUPTIBLE; |
253 | schedule(); | 254 | schedule(); |