|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
From 1d4d5cd68c250af3b232fa049bd2cde171272ee9 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
From: Lennart Poettering <lennart@poettering.net>
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
Date: Fri, 20 Jun 2014 16:58:21 +0200
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
Subject: [PATCH] core: clean-up signal reset logic when reexec
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
There's no need to save the old sigmask, if we are going to die. Let's
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
simplify this. Also, reset all the signal handlers, so that we don't
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
leave SIG_IGN set for some of them across reexec.
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
(cherry picked from commit 9bfcda9528636914aef3e0ab91191bb81654c83d)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
src/core/main.c | 10 +++++-----
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
1 file changed, 5 insertions(+), 5 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
diff --git a/src/core/main.c b/src/core/main.c
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
index e87b8cc8..c9472929 100644
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
--- a/src/core/main.c
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+++ b/src/core/main.c
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
@@ -1831,7 +1831,7 @@ finish:
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (reexecute) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
const char **args;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
unsigned i, args_size;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- sigset_t ss, o_ss;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ sigset_t ss;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
/* Close and disarm the watchdog, so that the new
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
* instance can reinitialize it, but doesn't get
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
@@ -1917,8 +1917,10 @@ finish:
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
/* reenable any blocked signals, especially important
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
* if we switch from initial ramdisk to init=... */
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- sigemptyset(&ss);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- sigprocmask(SIG_SETMASK, &ss, &o_ss);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ reset_all_signal_handlers();
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ assert_se(sigemptyset(&ss) == 0);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ assert_se(sigprocmask(SIG_SETMASK, &ss, NULL) == 0);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (switch_root_init) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
args[0] = switch_root_init;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
@@ -1938,8 +1940,6 @@ finish:
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
log_error("Failed to execute /bin/sh, giving up: %m");
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
} else
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
log_warning("Failed to execute /sbin/init, giving up: %m");
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- sigprocmask(SIG_SETMASK, &o_ss, NULL);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (arg_serialization) {
|