Ver código fonte

arm: if there's no handler we need to restore sigmask, syscall or no syscall

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Al Viro 13 anos atrás
pai
commit
7dfae72027
1 arquivos alterados com 6 adições e 8 exclusões
  1. 6 8
      arch/arm/kernel/signal.c

+ 6 - 8
arch/arm/kernel/signal.c

@@ -715,15 +715,13 @@ static void do_signal(struct pt_regs *regs, int syscall)
 #endif
 #endif
 			}
 			}
 		}
 		}
-
-		/* 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, &current->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(&current->saved_sigmask);
 }
 }
 
 
 asmlinkage void
 asmlinkage void