]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
x86/bugs: Add attack vector controls for VMSCAPE
authorDavid Kaplan <david.kaplan@amd.com>
Fri, 12 Sep 2025 15:24:28 +0000 (10:24 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 2 Nov 2025 13:18:03 +0000 (22:18 +0900)
[ Upstream commit 5799d5d8a6c877f03ad5b5a640977053be45059a ]

Use attack vector controls to select whether VMSCAPE requires mitigation,
similar to other bugs.

Signed-off-by: David Kaplan <david.kaplan@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Documentation/admin-guide/hw-vuln/attack_vector_controls.rst
arch/x86/kernel/cpu/bugs.c

index 5964901d66e317eec0c6b283f4ea868ca95008cd..d0bdbd81dcf9f2ace7b2868142f35b4c47ddb002 100644 (file)
@@ -218,6 +218,7 @@ SRSO                  X              X            X              X
 SSB                                  X
 TAA                   X              X            X              X            *       (Note 2)
 TSA                   X              X            X              X
+VMSCAPE                                           X
 =============== ============== ============ ============= ============== ============ ========
 
 Notes:
index 9750ce448e626b6bd56601f938a0899e1653637d..c6bb8e76eb9843b56ba1100d68d9145f0fa6d293 100644 (file)
@@ -434,6 +434,9 @@ static bool __init should_mitigate_vuln(unsigned int bug)
        case X86_BUG_SPEC_STORE_BYPASS:
                return cpu_attack_vector_mitigated(CPU_MITIGATE_USER_USER);
 
+       case X86_BUG_VMSCAPE:
+               return cpu_attack_vector_mitigated(CPU_MITIGATE_GUEST_HOST);
+
        default:
                WARN(1, "Unknown bug %x\n", bug);
                return false;
@@ -3308,15 +3311,18 @@ early_param("vmscape", vmscape_parse_cmdline);
 
 static void __init vmscape_select_mitigation(void)
 {
-       if (cpu_mitigations_off() ||
-           !boot_cpu_has_bug(X86_BUG_VMSCAPE) ||
+       if (!boot_cpu_has_bug(X86_BUG_VMSCAPE) ||
            !boot_cpu_has(X86_FEATURE_IBPB)) {
                vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
                return;
        }
 
-       if (vmscape_mitigation == VMSCAPE_MITIGATION_AUTO)
-               vmscape_mitigation = VMSCAPE_MITIGATION_IBPB_EXIT_TO_USER;
+       if (vmscape_mitigation == VMSCAPE_MITIGATION_AUTO) {
+               if (should_mitigate_vuln(X86_BUG_VMSCAPE))
+                       vmscape_mitigation = VMSCAPE_MITIGATION_IBPB_EXIT_TO_USER;
+               else
+                       vmscape_mitigation = VMSCAPE_MITIGATION_NONE;
+       }
 }
 
 static void __init vmscape_update_mitigation(void)