A machine check that is handled must still check MSR[RI] for recoverability of the interrupted context. Without this patch it's possible for a handled machine check to return to a context where it has clobbered live registers.
Signed-off-by: Nicholas Piggin <npig...@gmail.com> --- arch/powerpc/kernel/traps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index f9ef183a5454..3a8699995a77 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -846,11 +846,11 @@ void machine_check_exception(struct pt_regs *regs) die_mce("Machine check", regs, SIGBUS); +bail: /* Must die if the interrupt is not recoverable */ if (!(regs->msr & MSR_RI)) die_mce("Unrecoverable Machine check", regs, SIGBUS); -bail: if (nmi) nmi_exit(); } NOKPROBE_SYMBOL(machine_check_exception); -- 2.23.0