From 5222d31a15bce9d86b2d2781f75006f18df22865 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 3 Jul 2002 05:15:23 +0000 Subject: Patch from till busch -- unblock all signals in exec_signal() before calling exec() --- init/init.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/init/init.c b/init/init.c index f109c4ea5..e4812538d 100644 --- a/init/init.c +++ b/init/init.c @@ -758,10 +758,26 @@ static void shutdown_system(void) static void exec_signal(int sig) { struct init_action *a, *tmp; + sigset_t unblock_signals; + for (a = init_action_list; a; a = tmp) { tmp = a->next; if (a->action & RESTART) { shutdown_system(); + + /* unblock all signals, blocked in shutdown_system() */ + sigemptyset(&unblock_signals); + sigaddset(&unblock_signals, SIGHUP); + sigaddset(&unblock_signals, SIGCHLD); + sigaddset(&unblock_signals, SIGUSR1); + sigaddset(&unblock_signals, SIGUSR2); + sigaddset(&unblock_signals, SIGINT); + sigaddset(&unblock_signals, SIGTERM); + sigaddset(&unblock_signals, SIGCONT); + sigaddset(&unblock_signals, SIGSTOP); + sigaddset(&unblock_signals, SIGTSTP); + sigprocmask(SIG_UNBLOCK, &unblock_signals, NULL); + message(CONSOLE|LOG, "\rTrying to re-exec %s\n", a->command); execl(a->command, a->command, NULL); -- cgit v1.2.3