Browse Source

parisc: Prevent panic at system halt

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>
Helge Deller 7 years ago
parent
commit
6769828703
1 changed files with 5 additions and 8 deletions
  1. 5 8
      arch/parisc/kernel/process.c

+ 5 - 8
arch/parisc/kernel/process.c

@@ -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);
 void (*chassis_power_off)(void);
 
 
 /*
 /*
@@ -158,6 +150,11 @@ void machine_power_off(void)
 void (*pm_power_off)(void);
 void (*pm_power_off)(void);
 EXPORT_SYMBOL(pm_power_off);
 EXPORT_SYMBOL(pm_power_off);
 
 
+void machine_halt(void)
+{
+	machine_power_off();
+}
+
 void flush_thread(void)
 void flush_thread(void)
 {
 {
 	/* Only needs to handle fpu stuff or perf monitors.
 	/* Only needs to handle fpu stuff or perf monitors.