parisc: Prevent panic at system halt
authorHelge Deller <deller@gmx.de>
Wed, 11 Apr 2018 20:27:07 +0000 (22:27 +0200)
committerHelge Deller <deller@gmx.de>
Wed, 11 Apr 2018 20:28:41 +0000 (22:28 +0200)
When issuing a "shutdown -h now", the reboot syscall calls kernel_halt()
which shouldn't return, otherwise one gets this panic:

reboot: System halted
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
CPU: 0 PID: 1 Comm: systemd-shutdow Not tainted 4.16.0-32bit+ #560
Backtrace:
 [<1018a694>] show_stack+0x18/0x28
 [<106e68a8>] dump_stack+0x80/0x10c
 [<101a4df8>] panic+0xfc/0x290
 [<101a90b8>] do_exit+0x73c/0x914
 [<101c7e38>] SyS_reboot+0x190/0x1d4
 [<1017e444>] syscall_exit+0x0/0x14

Fix it by letting machine_halt() call machine_power_off() which doesn't
return.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/process.c

index bbe46571ff969bfd9d2789c9990e794816c0d5e1..b931745815e0f4e752ccd2c0b0342c5b49e69773 100644 (file)
@@ -112,14 +112,6 @@ void machine_restart(char *cmd)
 
 }
 
-void machine_halt(void)
-{
-       /*
-       ** The LED/ChassisCodes are updated by the led_halt()
-       ** function, called by the reboot notifier chain.
-       */
-}
-
 void (*chassis_power_off)(void);
 
 /*
@@ -158,6 +150,11 @@ void machine_power_off(void)
 void (*pm_power_off)(void);
 EXPORT_SYMBOL(pm_power_off);
 
+void machine_halt(void)
+{
+       machine_power_off();
+}
+
 void flush_thread(void)
 {
        /* Only needs to handle fpu stuff or perf monitors.