Skip to content

Commit

Permalink
parisc: Prevent panic at system halt
Browse files Browse the repository at this point in the history
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+ torvalds#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 <[email protected]>
  • Loading branch information
hdeller committed Apr 11, 2018
1 parent 71d577d commit 6769828
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions arch/parisc/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

/*
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit 6769828

Please sign in to comment.