mirror of
https://git.busybox.net/busybox
synced 2026-01-31 16:43:21 +00:00
over the years. Well I finally took the time to track this down. It turns out
that inside linux/kernel/sys.c the kernel will call
machine_halt();
do_exit(0);
when halting, or will call
machine_power_off();
do_exit(0);
during a reboot. Unlike sysv init, we call reboot from within the init
process, so if the call to machine_halt() or machine_power_off() returns, the call to do_exit(0) will cause the kernel to panic. Which is a very
bad thing to happen.
So I just added this little patch to fork and call the reboot
syscall from within the forked child process, thereby neatly
avoiding the problem.
But IMHO, both calls to do_exit(0) within linux/kernel/sys.c
are bugs and should be fixed.
-Erik
|
||
|---|---|---|
| .. | ||
| Config.in | ||
| halt.c | ||
| init.c | ||
| Makefile | ||
| Makefile.in | ||
| mesg.c | ||
| poweroff.c | ||
| reboot.c | ||
| start_stop_daemon.c | ||