diff options
| -rw-r--r-- | arch/unicore32/kernel/signal.c | 13 | 
1 files changed, 5 insertions, 8 deletions
diff --git a/arch/unicore32/kernel/signal.c b/arch/unicore32/kernel/signal.c index 72d95319041..7754df6ef7d 100644 --- a/arch/unicore32/kernel/signal.c +++ b/arch/unicore32/kernel/signal.c @@ -447,15 +447,12 @@ static void do_signal(struct pt_regs *regs, int syscall)  		    regs->UCreg_00 == -ERESTARTNOINTR) {  			setup_syscall_restart(regs);  		} - -		/* If there's no signal to deliver, we just put the saved -		 * sigmask back. -		 */ -		if (test_thread_flag(TIF_RESTORE_SIGMASK)) { -			clear_thread_flag(TIF_RESTORE_SIGMASK); -			sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL); -		}  	} +	/* If there's no signal to deliver, we just put the saved +	 * sigmask back. +	 */ +	if (test_and_clear_thread_flag(TIF_RESTORE_SIGMASK)) +		set_current_blocked(¤t->saved_sigmask);  }  asmlinkage void do_notify_resume(struct pt_regs *regs,  |