]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
x86/spectre_v2: Add disable_ibrs_and_friends
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Thu, 1 Feb 2018 15:43:41 +0000 (10:43 -0500)
committerJack Vogel <jack.vogel@oracle.com>
Wed, 7 Feb 2018 20:32:00 +0000 (12:32 -0800)
Instead of having the three calls to set_{ibrs,ibpb,lfence}_disabled.

Orabug: 27477743
CVE: CVE-2017-5715
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
Reviewed-by: Pavel Tatashin <pasha.tatashin@oracle.com>
arch/x86/kernel/cpu/bugs_64.c

index db4f8410d59a5cffb82210aa60b35c8e3aec51da..44a2177a4b62440335d9fa3b4a1af2f7ede08dd5 100644 (file)
@@ -197,6 +197,13 @@ static enum spectre_v2_mitigation __init ibrs_select(void)
        return mode;
 }
 
+static void __init disable_ibrs_and_friends(void)
+{
+       set_ibrs_disabled();
+       set_ibpb_disabled();
+       set_lfence_disabled();
+}
+
 static void __init spectre_v2_select_mitigation(void)
 {
        enum spectre_v2_mitigation_cmd cmd = spectre_v2_parse_cmdline();
@@ -208,17 +215,13 @@ static void __init spectre_v2_select_mitigation(void)
         */
        if (!boot_cpu_has_bug(X86_BUG_SPECTRE_V2) &&
            (cmd == SPECTRE_V2_CMD_NONE || cmd == SPECTRE_V2_CMD_AUTO)) {
-               set_ibrs_disabled();
-               set_ibpb_disabled();
-               set_lfence_disabled();
+               disable_ibrs_and_friends();
                return;
        }
 
        switch (cmd) {
        case SPECTRE_V2_CMD_NONE:
-               set_ibrs_disabled();
-               set_ibpb_disabled();
-               set_lfence_disabled();
+               disable_ibrs_and_friends();
                return;
 
        case SPECTRE_V2_CMD_FORCE:
@@ -283,9 +286,7 @@ display:
        /* IBRS is unnecessary with retpoline mitigation. */
        if (mode == SPECTRE_V2_RETPOLINE_GENERIC ||
            mode == SPECTRE_V2_RETPOLINE_AMD) {
-               set_ibrs_disabled();
-               set_ipbp_disabled();
-               set_lfence_disabled();
+               disable_ibrs_and_friends();
        }
 }