diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index 821a2a84fc86af099ce9e6d1ca20ad9c8fb393fc..24ee4f17b151e0272d0a93d10944db74f6ddb0b0 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c @@ -2068,10 +2068,14 @@ static __always_inline void exc_machine_check_kernel(struct pt_regs *regs) static __always_inline void exc_machine_check_user(struct pt_regs *regs) { + irqentry_state_t irq_state; + irqentry_enter_from_user_mode(regs); + irq_state = irqentry_nmi_enter(regs); instrumentation_begin(); machine_check_vector(regs); instrumentation_end(); + irqentry_nmi_exit(regs, irq_state); irqentry_exit_to_user_mode(regs); }