Browse Source

init: hopefully fix "rebooting" in containers

function                                             old     new   delta
pause_and_low_level_reboot                            48      57      +9

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko 5 years ago
parent
commit
426aff88a0
1 changed files with 7 additions and 2 deletions
  1. 7 2
      init/init.c

+ 7 - 2
init/init.c

@@ -752,8 +752,13 @@ static void pause_and_low_level_reboot(unsigned magic)
 		reboot(magic);
 		_exit(EXIT_SUCCESS);
 	}
-	while (1)
-		sleep(1);
+	/* Used to have "while (1) sleep(1)" here.
+	 * However, in containers reboot() call is ignored, and with that loop
+	 * we would eternally sleep here - not what we want.
+	 */
+	waitpid(pid, NULL, 0);
+	sleep(1); /* paranoia */
+	_exit(EXIT_SUCCESS);
 }
 
 static void run_shutdown_and_kill_processes(void)