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 836a5a19eb2..e061ef5dd44 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,   */  long sys_sigsuspend(old_sigset_t mask)  { -	mask &= _BLOCKABLE; -	spin_lock_irq(¤t->sighand->siglock); +	sigset_t blocked; +  	current->saved_sigmask = current->blocked; -	siginitset(¤t->blocked, mask); -	recalc_sigpending(); -	spin_unlock_irq(¤t->sighand->siglock); + +	mask &= _BLOCKABLE; +	siginitset(&blocked, mask); +	set_current_blocked(&blocked);   	current->state = TASK_INTERRUPTIBLE;   	schedule();  |