aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2004-04-12 19:17:13 +0000
committerEric Andersen <andersen@codepoet.org>2004-04-12 19:17:13 +0000
commit4e19fa9b644065c112da3472ab6ce3a938cc1ac8 (patch)
treea70587fa0e8d409e5ee99e8e3a2b3d804f01f02f
parent1e6aba967ce2e1225e7ed566e5b83cbfb117b6b4 (diff)
downloadbusybox-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.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/init/init.c b/init/init.c
index ae2fd4c3a..fd1443e44 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) {