new helper: sigmask_to_save()
[linux-3.10.git] / arch / arm / kernel / signal.c
index 3d1daac..2e66c93 100644 (file)
@@ -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 = &current->saved_sigmask;
-               else
-                       oldset = &current->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,