x86/mce: Use idtentry_nmi_enter/exit()

The recent fix for NMI vs. IRQ state tracking missed to apply the cure
to the MCE handler.

Fixes: ba1f2b2eaa2a ("x86/entry: Fix NMI vs IRQ state tracking")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/87mu17ism2.fsf@nanos.tec.linutronix.de

authored by Thomas Gleixner and committed by Borislav Petkov bc21a291 86a82ae0

Changed files
+4 -2
arch
x86
kernel
cpu
mce
+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)