Zbigniew Jędrzejewski-Szmek 62fe94
From 1b6d7fa742e303611dff8d7ebfa86ee5fb8b7dc7 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 62fe94
From: Lennart Poettering <lennart@poettering.net>
Zbigniew Jędrzejewski-Szmek 62fe94
Date: Tue, 26 Aug 2014 21:11:35 +0200
Zbigniew Jędrzejewski-Szmek 62fe94
Subject: [PATCH] util: make use of newly added reset_signal_mask() call
Zbigniew Jędrzejewski-Szmek 62fe94
 wherever appropriate
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
---
Zbigniew Jędrzejewski-Szmek 62fe94
 src/core/execute.c  | 6 ++----
Zbigniew Jędrzejewski-Szmek 62fe94
 src/core/main.c     | 7 ++-----
Zbigniew Jędrzejewski-Szmek 62fe94
 src/nspawn/nspawn.c | 4 +---
Zbigniew Jędrzejewski-Szmek 62fe94
 src/shared/util.c   | 5 +----
Zbigniew Jędrzejewski-Szmek 62fe94
 4 files changed, 6 insertions(+), 16 deletions(-)
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/core/execute.c b/src/core/execute.c
Zbigniew Jędrzejewski-Szmek 62fe94
index b5b22472d5..066efd6fdf 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/core/execute.c
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/core/execute.c
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1301,7 +1301,6 @@ int exec_spawn(ExecCommand *command,
Zbigniew Jędrzejewski-Szmek 62fe94
                 int dont_close[n_fds + 3];
Zbigniew Jędrzejewski-Szmek 62fe94
                 uid_t uid = (uid_t) -1;
Zbigniew Jędrzejewski-Szmek 62fe94
                 gid_t gid = (gid_t) -1;
Zbigniew Jędrzejewski-Szmek 62fe94
-                sigset_t ss;
Zbigniew Jędrzejewski-Szmek 62fe94
                 int i, err;
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 /* child */
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1319,9 +1318,8 @@ int exec_spawn(ExecCommand *command,
Zbigniew Jędrzejewski-Szmek 62fe94
                 if (context->ignore_sigpipe)
Zbigniew Jędrzejewski-Szmek 62fe94
                         ignore_signals(SIGPIPE, -1);
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-                assert_se(sigemptyset(&ss) == 0);
Zbigniew Jędrzejewski-Szmek 62fe94
-                if (sigprocmask(SIG_SETMASK, &ss, NULL) < 0) {
Zbigniew Jędrzejewski-Szmek 62fe94
-                        err = -errno;
Zbigniew Jędrzejewski-Szmek 62fe94
+                err = reset_signal_mask();
Zbigniew Jędrzejewski-Szmek 62fe94
+                if (err < 0) {
Zbigniew Jędrzejewski-Szmek 62fe94
                         r = EXIT_SIGNAL_MASK;
Zbigniew Jędrzejewski-Szmek 62fe94
                         goto fail_child;
Zbigniew Jędrzejewski-Szmek 62fe94
                 }
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/core/main.c b/src/core/main.c
Zbigniew Jędrzejewski-Szmek 62fe94
index bd148b1b33..95ab40fffc 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/core/main.c
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/core/main.c
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1834,7 +1834,6 @@ finish:
Zbigniew Jędrzejewski-Szmek 62fe94
         if (reexecute) {
Zbigniew Jędrzejewski-Szmek 62fe94
                 const char **args;
Zbigniew Jędrzejewski-Szmek 62fe94
                 unsigned i, args_size;
Zbigniew Jędrzejewski-Szmek 62fe94
-                sigset_t ss;
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 /* Close and disarm the watchdog, so that the new
Zbigniew Jędrzejewski-Szmek 62fe94
                  * instance can reinitialize it, but doesn't get
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1918,12 +1917,10 @@ finish:
Zbigniew Jędrzejewski-Szmek 62fe94
                 args[i++] = NULL;
Zbigniew Jędrzejewski-Szmek 62fe94
                 assert(i <= args_size);
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-                /* reenable any blocked signals, especially important
Zbigniew Jędrzejewski-Szmek 62fe94
+                /* Reenable any blocked signals, especially important
Zbigniew Jędrzejewski-Szmek 62fe94
                  * if we switch from initial ramdisk to init=... */
Zbigniew Jędrzejewski-Szmek 62fe94
                 reset_all_signal_handlers();
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-                assert_se(sigemptyset(&ss) == 0);
Zbigniew Jędrzejewski-Szmek 62fe94
-                assert_se(sigprocmask(SIG_SETMASK, &ss, NULL) == 0);
Zbigniew Jędrzejewski-Szmek 62fe94
+                reset_signal_mask();
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 if (switch_root_init) {
Zbigniew Jędrzejewski-Szmek 62fe94
                         args[0] = switch_root_init;
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
Zbigniew Jędrzejewski-Szmek 62fe94
index 2c718557ee..56d9cc68c6 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/nspawn/nspawn.c
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/nspawn/nspawn.c
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -3156,9 +3156,7 @@ int main(int argc, char *argv[]) {
Zbigniew Jędrzejewski-Szmek 62fe94
                         kmsg_socket_pair[0] = safe_close(kmsg_socket_pair[0]);
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                         reset_all_signal_handlers();
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-                        assert_se(sigemptyset(&mask) == 0);
Zbigniew Jędrzejewski-Szmek 62fe94
-                        assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
Zbigniew Jędrzejewski-Szmek 62fe94
+                        reset_signal_mask();
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                         k = open_terminal(console, O_RDWR);
Zbigniew Jędrzejewski-Szmek 62fe94
                         if (k != STDIN_FILENO) {
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/shared/util.c b/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 62fe94
index 98c07163da..fdcf5719fa 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -3890,16 +3890,13 @@ void execute_directory(const char *directory, DIR *d, usec_t timeout, char *argv
Zbigniew Jędrzejewski-Szmek 62fe94
                 _cleanup_hashmap_free_free_ Hashmap *pids = NULL;
Zbigniew Jędrzejewski-Szmek 62fe94
                 _cleanup_closedir_ DIR *_d = NULL;
Zbigniew Jędrzejewski-Szmek 62fe94
                 struct dirent *de;
Zbigniew Jędrzejewski-Szmek 62fe94
-                sigset_t ss;
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 /* We fork this all off from a child process so that
Zbigniew Jędrzejewski-Szmek 62fe94
                  * we can somewhat cleanly make use of SIGALRM to set
Zbigniew Jędrzejewski-Szmek 62fe94
                  * a time limit */
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 reset_all_signal_handlers();
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-                assert_se(sigemptyset(&ss) == 0);
Zbigniew Jędrzejewski-Szmek 62fe94
-                assert_se(sigprocmask(SIG_SETMASK, &ss, NULL) == 0);
Zbigniew Jędrzejewski-Szmek 62fe94
+                reset_signal_mask();
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0);
Zbigniew Jędrzejewski-Szmek 62fe94