+4
-2
arch/x86/kernel/cpu/mce/core.c
+4
-2
arch/x86/kernel/cpu/mce/core.c
···
1904
1904
1905
1905
static __always_inline void exc_machine_check_kernel(struct pt_regs *regs)
1906
1906
{
1907
+
bool irq_state;
1908
+
1907
1909
WARN_ON_ONCE(user_mode(regs));
1908
1910
1909
1911
/*
···
1916
1914
mce_check_crashing_cpu())
1917
1915
return;
1918
1916
1919
-
nmi_enter();
1917
+
irq_state = idtentry_enter_nmi(regs);
1920
1918
/*
1921
1919
* The call targets are marked noinstr, but objtool can't figure
1922
1920
* that out because it's an indirect call. Annotate it.
···
1927
1925
if (regs->flags & X86_EFLAGS_IF)
1928
1926
trace_hardirqs_on_prepare();
1929
1927
instrumentation_end();
1930
-
nmi_exit();
1928
+
idtentry_exit_nmi(regs, irq_state);
1931
1929
}
1932
1930
1933
1931
static __always_inline void exc_machine_check_user(struct pt_regs *regs)