From: David Kaplan <david.kaplan@amd.com>
To: Thomas Gleixner <tglx@linutronix.de>,
Borislav Petkov <bp@alien8.de>,
Peter Zijlstra <peterz@infradead.org>,
Josh Poimboeuf <jpoimboe@kernel.org>,
Pawan Gupta <pawan.kumar.gupta@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>,
Dave Hansen <dave.hansen@linux.intel.com>, <x86@kernel.org>,
"H . Peter Anvin" <hpa@zytor.com>
Cc: <linux-kernel@vger.kernel.org>
Subject: [RFC PATCH 20/34] x86/bugs: Determine relevant vulnerabilities based on attack vector controls.
Date: Thu, 12 Sep 2024 14:08:43 -0500 [thread overview]
Message-ID: <20240912190857.235849-21-david.kaplan@amd.com> (raw)
In-Reply-To: <20240912190857.235849-1-david.kaplan@amd.com>
The function should_mitigate_vuln() defines which vulnerabilities should
be mitigated based on the selected attack vector controls. The
selections here are based on the individual characteristics of each
vulnerability.
Signed-off-by: David Kaplan <david.kaplan@amd.com>
---
arch/x86/kernel/cpu/bugs.c | 75 ++++++++++++++++++++++++++++++++++++++
1 file changed, 75 insertions(+)
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 334fd2c5251d..a50c7cf2975d 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -287,6 +287,81 @@ static void x86_amd_ssb_disable(void)
wrmsrl(MSR_AMD64_LS_CFG, msrval);
}
+enum vulnerabilities {
+ SPECTRE_V1,
+ SPECTRE_V2,
+ RETBLEED,
+ SPECTRE_V2_USER,
+ L1TF,
+ MDS,
+ TAA,
+ MMIO,
+ RFDS,
+ SRBDS,
+ SRSO,
+ GDS,
+};
+
+/*
+ * Returns true if vulnerability should be mitigated based on the
+ * selected attack vector controls
+ *
+ * See Documentation/admin-guide/hw-vuln/attack_vector_controls.rst
+ */
+static bool __init should_mitigate_vuln(enum vulnerabilities vuln)
+{
+ switch (vuln) {
+ /*
+ * The only spectre_v1 mitigations in the kernel are related to
+ * SWAPGS protection on kernel entry. Therefore, protection is
+ * only required for the user->kernel attack vector.
+ */
+ case SPECTRE_V1:
+ return cpu_mitigate_attack_vector(CPU_MITIGATE_USER_KERNEL);
+
+ /*
+ * Both spectre_v2 and srso may allow user->kernel or
+ * guest->host attacks through branch predictor manipulation.
+ */
+ case SPECTRE_V2:
+ case SRSO:
+ return cpu_mitigate_attack_vector(CPU_MITIGATE_USER_KERNEL) ||
+ cpu_mitigate_attack_vector(CPU_MITIGATE_GUEST_HOST);
+
+ /*
+ * spectre_v2_user refers to user->user or guest->guest branch
+ * predictor attacks only. Other indirect branch predictor attacks
+ * are covered by the spectre_v2 vulnerability.
+ */
+ case SPECTRE_V2_USER:
+ return cpu_mitigate_attack_vector(CPU_MITIGATE_USER_USER) ||
+ cpu_mitigate_attack_vector(CPU_MITIGATE_GUEST_GUEST);
+
+ /* L1TF is only possible as a guest->host attack */
+ case L1TF:
+ return cpu_mitigate_attack_vector(CPU_MITIGATE_GUEST_HOST);
+
+ /*
+ * All the vulnerabilities below allow potentially leaking data
+ * across address spaces. Therefore, mitigation is required for
+ * any of these 4 attack vectors.
+ */
+ case MDS:
+ case TAA:
+ case MMIO:
+ case RFDS:
+ case SRBDS:
+ case GDS:
+ return cpu_mitigate_attack_vector(CPU_MITIGATE_USER_KERNEL) ||
+ cpu_mitigate_attack_vector(CPU_MITIGATE_GUEST_HOST) ||
+ cpu_mitigate_attack_vector(CPU_MITIGATE_USER_USER) ||
+ cpu_mitigate_attack_vector(CPU_MITIGATE_GUEST_GUEST);
+ default:
+ return false;
+ }
+}
+
+
/* Default mitigation for MDS-affected CPUs */
static enum mds_mitigations mds_mitigation __ro_after_init =
IS_ENABLED(CONFIG_MITIGATION_MDS) ? MDS_MITIGATION_AUTO : MDS_MITIGATION_OFF;
--
2.34.1
next prev parent reply other threads:[~2024-09-12 19:09 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-12 19:08 [RFC PATCH 00/34] x86/bugs: Attack vector controls David Kaplan
2024-09-12 19:08 ` [RFC PATCH 01/34] x86/bugs: Relocate mds/taa/mmio/rfds defines David Kaplan
2024-10-24 13:07 ` Borislav Petkov
2024-09-12 19:08 ` [RFC PATCH 02/34] x86/bugs: Add AUTO mitigations for mds/taa/mmio/rfds David Kaplan
2024-09-12 19:08 ` [RFC PATCH 03/34] x86/bugs: Restructure mds mitigation David Kaplan
2024-09-12 19:08 ` [RFC PATCH 04/34] x86/bugs: Restructure taa mitigation David Kaplan
2024-09-12 19:08 ` [RFC PATCH 05/34] x86/bugs: Restructure mmio mitigation David Kaplan
2024-09-12 19:08 ` [RFC PATCH 06/34] x86/bugs: Restructure rfds mitigation David Kaplan
2024-09-12 19:08 ` [RFC PATCH 07/34] x86/bugs: Remove md_clear_*_mitigation() David Kaplan
2024-10-08 8:40 ` Nikolay Borisov
2024-09-12 19:08 ` [RFC PATCH 08/34] x86/bugs: Restructure srbds mitigation David Kaplan
2024-09-12 19:08 ` [RFC PATCH 09/34] x86/bugs: Restructure gds mitigation David Kaplan
2024-09-12 19:08 ` [RFC PATCH 10/34] x86/bugs: Restructure spectre_v1 mitigation David Kaplan
2024-09-12 19:08 ` [RFC PATCH 11/34] x86/bugs: Restructure retbleed mitigation David Kaplan
2024-10-08 8:32 ` Nikolay Borisov
2024-10-08 14:28 ` Kaplan, David
2024-09-12 19:08 ` [RFC PATCH 12/34] x86/bugs: Restructure spectre_v2_user mitigation David Kaplan
2024-09-12 19:08 ` [RFC PATCH 13/34] x86/bugs: Restructure bhi mitigation David Kaplan
2024-10-08 12:41 ` Nikolay Borisov
2024-10-08 14:25 ` Kaplan, David
2024-09-12 19:08 ` [RFC PATCH 14/34] x86/bugs: Restructure spectre_v2 mitigation David Kaplan
2024-09-12 19:08 ` [RFC PATCH 15/34] x86/bugs: Restructure ssb mitigation David Kaplan
2024-10-08 15:21 ` Nikolay Borisov
2024-09-12 19:08 ` [RFC PATCH 16/34] x86/bugs: Restructure l1tf mitigation David Kaplan
2024-09-15 9:28 ` kernel test robot
2024-09-12 19:08 ` [RFC PATCH 17/34] x86/bugs: Restructure srso mitigation David Kaplan
2024-09-12 19:08 ` [RFC PATCH 18/34] Documentation/x86: Document the new attack vector controls David Kaplan
2024-10-01 0:43 ` Manwaring, Derek
2024-10-01 1:53 ` Kaplan, David
2024-10-01 22:21 ` Manwaring, Derek
2024-09-12 19:08 ` [RFC PATCH 19/34] x86/bugs: Define attack vectors David Kaplan
2024-09-12 19:08 ` David Kaplan [this message]
2024-09-12 19:08 ` [RFC PATCH 21/34] x86/bugs: Add attack vector controls for mds David Kaplan
2024-10-01 0:50 ` Manwaring, Derek
2024-10-01 1:58 ` Kaplan, David
2024-10-01 22:37 ` Manwaring, Derek
2024-10-02 14:28 ` Kaplan, David
2024-10-02 20:11 ` Manwaring, Derek
2024-10-02 20:26 ` Kaplan, David
2024-10-02 15:50 ` Pawan Gupta
2024-10-02 19:40 ` Manwaring, Derek
2024-09-12 19:08 ` [RFC PATCH 22/34] x86/bugs: Add attack vector controls for taa David Kaplan
2024-09-12 19:08 ` [RFC PATCH 23/34] x86/bugs: Add attack vector controls for mmio David Kaplan
2024-09-12 19:08 ` [RFC PATCH 24/34] x86/bugs: Add attack vector controls for rfds David Kaplan
2024-09-12 19:08 ` [RFC PATCH 25/34] x86/bugs: Add attack vector controls for srbds David Kaplan
2024-09-12 19:08 ` [RFC PATCH 26/34] x86/bugs: Add attack vector controls for gds David Kaplan
2024-09-12 19:08 ` [RFC PATCH 27/34] x86/bugs: Add attack vector controls for spectre_v1 David Kaplan
2024-09-12 19:37 ` Dave Hansen
2024-09-12 19:57 ` Kaplan, David
2024-09-12 20:16 ` Dave Hansen
2024-09-12 21:15 ` Kaplan, David
2024-10-01 0:39 ` Manwaring, Derek
2024-10-01 1:46 ` Kaplan, David
2024-10-01 22:18 ` Manwaring, Derek
2024-09-13 14:20 ` Borislav Petkov
2024-09-12 19:08 ` [RFC PATCH 28/34] x86/bugs: Add attack vector controls for retbleed David Kaplan
2024-09-12 19:08 ` [RFC PATCH 29/34] x86/bugs: Add attack vector controls for spectre_v2_user David Kaplan
2024-09-12 19:08 ` [RFC PATCH 30/34] x86/bugs: Add attack vector controls for bhi David Kaplan
2024-09-12 19:08 ` [RFC PATCH 31/34] x86/bugs: Add attack vector controls for spectre_v2 David Kaplan
2024-09-12 19:08 ` [RFC PATCH 32/34] x86/bugs: Add attack vector controls for l1tf David Kaplan
2024-09-12 19:08 ` [RFC PATCH 33/34] x86/bugs: Add attack vector controls for srso David Kaplan
2024-09-12 19:08 ` [RFC PATCH 34/34] x86/pti: Add attack vector controls for pti David Kaplan
2024-09-17 17:04 ` [RFC PATCH 00/34] x86/bugs: Attack vector controls Pawan Gupta
2024-09-18 6:29 ` Kaplan, David
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240912190857.235849-21-david.kaplan@amd.com \
--to=david.kaplan@amd.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jpoimboe@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.