diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index a99107a98416d8fc47385ddb2ef812924b9aeb5a..2b8daa2fe64b1baa7a2efa5cfc6f029f902acf08 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c @@ -2052,10 +2052,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); }