summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorMichal Schmidt <mschmidt@redhat.com>2015-09-30 15:12:19 +0200
committerMichal Schmidt <mschmidt@redhat.com>2015-10-07 14:24:49 +0200
commit4cf0b03b976dd7050595f835092b551623468dbe (patch)
tree32134dd2982ff2a688cfd6f4a216b359c19f7b02 /src/core
parent647cb08bc3d5da8a923d055612f558cb6b61e303 (diff)
core: change how crash_shell and crash_reboot interact
Instead of freezing in PID1 and letting the forked child freeze or reboot when exec("/bin/sh") fails, just wait for the child's exit and then do the freeze_or_reboot in PID1 as usual. This means that when both crash_shell and crash_reboot are enabled, the system will reboot after the shell exits.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/main.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/core/main.c b/src/core/main.c
index 2fa96901c7..13fa78fed8 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -231,11 +231,10 @@ noreturn static void crash(int sig) {
(void) execle("/bin/sh", "/bin/sh", NULL, environ);
log_emergency_errno(errno, "execle() failed: %m");
- freeze_or_reboot();
_exit(EXIT_FAILURE);
} else {
log_info("Spawned crash shell as PID "PID_FMT".", pid);
- freeze();
+ (void) wait_for_terminate(pid, NULL);
}
}