x86/bugs: Do IBPB fallback check only once
authorJosh Poimboeuf <jpoimboe@kernel.org>
Tue, 14 Jun 2022 22:07:19 +0000 (15:07 -0700)
committerBorislav Petkov <bp@suse.de>
Mon, 27 Jun 2022 08:34:00 +0000 (10:34 +0200)
When booting with retbleed=auto, if the kernel wasn't built with
CONFIG_CC_HAS_RETURN_THUNK, the mitigation falls back to IBPB.  Make
sure a warning is printed in that case.  The IBPB fallback check is done
twice, but it really only needs to be done once.

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
arch/x86/kernel/cpu/bugs.c

index 04077d1..108bd74 100644 (file)
@@ -891,18 +891,13 @@ static void __init retbleed_select_mitigation(void)
        case RETBLEED_CMD_AUTO:
        default:
                if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD ||
-                   boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) {
-
-                       if (IS_ENABLED(CONFIG_RETPOLINE) &&
-                           IS_ENABLED(CONFIG_CC_HAS_RETURN_THUNK))
-                               retbleed_mitigation = RETBLEED_MITIGATION_UNRET;
-                       else
-                               retbleed_mitigation = RETBLEED_MITIGATION_IBPB;
-               }
+                   boot_cpu_data.x86_vendor == X86_VENDOR_HYGON)
+                       retbleed_mitigation = RETBLEED_MITIGATION_UNRET;
 
                /*
-                * The Intel mitigation (IBRS) was already selected in
-                * spectre_v2_select_mitigation().
+                * The Intel mitigation (IBRS or eIBRS) was already selected in
+                * spectre_v2_select_mitigation().  'retbleed_mitigation' will
+                * be set accordingly below.
                 */
 
                break;