diff options
author | Helge Deller <deller@gmx.de> | 2018-04-11 22:27:07 +0200 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2018-04-11 22:28:41 +0200 |
commit | 67698287031be7c1821f9b151237ca8cdb231fd1 (patch) | |
tree | 73d24e9909f652935ad02e297544fcf4c4348a16 /arch/parisc/kernel/process.c | |
parent | 71d577db01a5177c7807a2f3d3df9bab9d21c500 (diff) |
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>
Diffstat (limited to 'arch/parisc/kernel/process.c')
-rw-r--r-- | arch/parisc/kernel/process.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index bbe46571ff96..b931745815e0 100644 --- a/arch/parisc/kernel/process.c +++ b/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); /* @@ -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. |