diff options
Diffstat (limited to 'arch/ia64/kernel/signal.c')
| -rw-r--r-- | arch/ia64/kernel/signal.c | 15 | 
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c index 5740296c35a..19c5a78636f 100644 --- a/arch/ia64/kernel/signal.c +++ b/arch/ia64/kernel/signal.c @@ -464,7 +464,7 @@ ia64_do_signal (struct sigscratch *scr, long in_syscall)  	if (!user_mode(&scr->pt))  		return; -	if (test_thread_flag(TIF_RESTORE_SIGMASK)) +	if (current_thread_info()->status & TS_RESTORE_SIGMASK)  		oldset = ¤t->saved_sigmask;  	else  		oldset = ¤t->blocked; @@ -530,12 +530,13 @@ ia64_do_signal (struct sigscratch *scr, long in_syscall)  		 * continue to iterate in this loop so we can deliver the SIGSEGV...  		 */  		if (handle_signal(signr, &ka, &info, oldset, scr)) { -			/* a signal was successfully delivered; the saved +			/* +			 * A signal was successfully delivered; the saved  			 * sigmask will have been stored in the signal frame,  			 * and will be restored by sigreturn, so we can simply -			 * clear the TIF_RESTORE_SIGMASK flag */ -			if (test_thread_flag(TIF_RESTORE_SIGMASK)) -				clear_thread_flag(TIF_RESTORE_SIGMASK); +			 * clear the TS_RESTORE_SIGMASK flag. +			 */ +			current_thread_info()->status &= ~TS_RESTORE_SIGMASK;  			return;  		}  	} @@ -566,8 +567,8 @@ ia64_do_signal (struct sigscratch *scr, long in_syscall)  	/* 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); +	if (current_thread_info()->status & TS_RESTORE_SIGMASK) { +		current_thread_info()->status &= ~TS_RESTORE_SIGMASK;  		sigprocmask(SIG_SETMASK, ¤t->saved_sigmask, NULL);  	}  }  |