diff options
Diffstat (limited to 'arch/arm/kernel/signal.c')
| -rw-r--r-- | arch/arm/kernel/signal.c | 12 | 
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index 3d1daac8ea0..2e66c93973c 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c @@ -530,11 +530,11 @@ setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info,   */	  static int  handle_signal(unsigned long sig, struct k_sigaction *ka, -	      siginfo_t *info, sigset_t *oldset, -	      struct pt_regs * regs) +	      siginfo_t *info, struct pt_regs *regs)  {  	struct thread_info *thread = current_thread_info();  	struct task_struct *tsk = current; +	sigset_t *oldset = sigmask_to_save();  	int usig = sig;  	int ret; @@ -617,8 +617,6 @@ static void do_signal(struct pt_regs *regs, int syscall)  	 */  	signr = get_signal_to_deliver(&info, &ka, regs, NULL);  	if (signr > 0) { -		sigset_t *oldset; -  		/*  		 * Depending on the signal settings we may need to revert the  		 * decision to restart the system call.  But skip this if a @@ -635,11 +633,7 @@ static void do_signal(struct pt_regs *regs, int syscall)  			clear_thread_flag(TIF_SYSCALL_RESTARTSYS);  		} -		if (test_thread_flag(TIF_RESTORE_SIGMASK)) -			oldset = ¤t->saved_sigmask; -		else -			oldset = ¤t->blocked; -		if (handle_signal(signr, &ka, &info, oldset, regs) == 0) { +		if (handle_signal(signr, &ka, &info, regs) == 0) {  			/*  			 * A signal was successfully delivered; the saved  			 * sigmask will have been stored in the signal frame,  |