x86/extable: Provide EX_TYPE_DEFAULT_MCE_SAFE and EX_TYPE_FAULT_MCE_SAFE
authorThomas Gleixner <tglx@linutronix.de>
Wed, 8 Sep 2021 13:29:19 +0000 (15:29 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 29 Jul 2022 15:25:25 +0000 (17:25 +0200)
[ Upstream commit 2cadf5248b9316d3c8af876e795d61c55476f6e9 ]

Provide exception fixup types which can be used to identify fixups which
allow in kernel #MC recovery and make them invoke the existing handlers.

These will be used at places where #MC recovery is handled correctly by the
caller.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20210908132525.269689153@linutronix.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/include/asm/extable_fixup_types.h
arch/x86/kernel/cpu/mce/severity.c
arch/x86/mm/extable.c

index 0adc117..409524d 100644 (file)
@@ -16,4 +16,7 @@
 #define        EX_TYPE_WRMSR_IN_MCE            10
 #define        EX_TYPE_RDMSR_IN_MCE            11
 
+#define        EX_TYPE_DEFAULT_MCE_SAFE        12
+#define        EX_TYPE_FAULT_MCE_SAFE          13
+
 #endif
index 74fe763..d9b77a7 100644 (file)
@@ -278,6 +278,8 @@ static int error_context(struct mce *m, struct pt_regs *regs)
                m->kflags |= MCE_IN_KERNEL_COPYIN;
                fallthrough;
        case EX_TYPE_FAULT:
+       case EX_TYPE_FAULT_MCE_SAFE:
+       case EX_TYPE_DEFAULT_MCE_SAFE:
                m->kflags |= MCE_IN_KERNEL_RECOV;
                return IN_KERNEL_RECOV;
        default:
index 5db46df..f37e290 100644 (file)
@@ -131,8 +131,10 @@ int fixup_exception(struct pt_regs *regs, int trapnr, unsigned long error_code,
 
        switch (e->type) {
        case EX_TYPE_DEFAULT:
+       case EX_TYPE_DEFAULT_MCE_SAFE:
                return ex_handler_default(e, regs);
        case EX_TYPE_FAULT:
+       case EX_TYPE_FAULT_MCE_SAFE:
                return ex_handler_fault(e, regs, trapnr);
        case EX_TYPE_UACCESS:
                return ex_handler_uaccess(e, regs, trapnr);