diff options
author | Eric Andersen | 2004-04-12 19:17:13 +0000 |
---|---|---|
committer | Eric Andersen | 2004-04-12 19:17:13 +0000 |
commit | 4e19fa9b644065c112da3472ab6ce3a938cc1ac8 (patch) | |
tree | a70587fa0e8d409e5ee99e8e3a2b3d804f01f02f | |
parent | 1e6aba967ce2e1225e7ed566e5b83cbfb117b6b4 (diff) | |
download | busybox-4e19fa9b644065c112da3472ab6ce3a938cc1ac8.zip busybox-4e19fa9b644065c112da3472ab6ce3a938cc1ac8.tar.gz |
As reported by Quy Tonthat, init has problems with inittab's that
contain only actions sysinit/wait/once. It does not clean up zombies
in that case.
-rw-r--r-- | init/init.c | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/init/init.c b/init/init.c index ae2fd4c..fd1443e 100644 --- a/init/init.c +++ b/init/init.c @@ -1144,13 +1144,6 @@ extern int init_main(int argc, char **argv) /* Next run anything to be run only once */ run_actions(ONCE); - /* If there is nothing else to do, stop */ - if (init_action_list == NULL) { - message(LOG | CONSOLE, - "No more tasks for init -- sleeping forever."); - loop_forever(); - } - /* Redefine SIGHUP to reread /etc/inittab */ signal(SIGHUP, reload_signal); @@ -1167,7 +1160,7 @@ extern int init_main(int argc, char **argv) /* Wait for a child process to exit */ wpid = wait(&status); - while (wpid > 0) { + while (init_action_list && wpid > 0) { /* Find out who died and clean up their corpse */ for (a = init_action_list; a; a = a->next) { if (a->pid == wpid) { |