|
Borislav Petkov |
5415e7 |
From: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
|
|
Borislav Petkov |
5415e7 |
Date: Thu, 19 May 2022 20:34:14 -0700
|
|
Borislav Petkov |
5415e7 |
Subject: x86/speculation/mmio: Reuse SRBDS mitigation for SBDS
|
|
Borislav Petkov |
5415e7 |
Git-commit: a992b8a4682f119ae035a01b40d4d0665c4a2875
|
|
Borislav Petkov |
5415e7 |
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
|
|
Borislav Petkov |
5415e7 |
Patch-mainline: Queued in tip for v5.19
|
|
Borislav Petkov |
5415e7 |
References: bsc#1199650 CVE-2022-21166 CVE-2022-21127 CVE-2022-21123 CVE-2022-21125 CVE-2022-21180
|
|
Borislav Petkov |
5415e7 |
|
|
Borislav Petkov |
5415e7 |
The Shared Buffers Data Sampling (SBDS) variant of Processor MMIO Stale
|
|
Borislav Petkov |
5415e7 |
Data vulnerabilities may expose RDRAND, RDSEED and SGX EGETKEY data.
|
|
Borislav Petkov |
5415e7 |
Mitigation for this is added by a microcode update.
|
|
Borislav Petkov |
5415e7 |
|
|
Borislav Petkov |
5415e7 |
As some of the implications of SBDS are similar to SRBDS, SRBDS mitigation
|
|
Borislav Petkov |
5415e7 |
infrastructure can be leveraged by SBDS. Set X86_BUG_SRBDS and use SRBDS
|
|
Borislav Petkov |
5415e7 |
mitigation.
|
|
Borislav Petkov |
5415e7 |
|
|
Borislav Petkov |
5415e7 |
Mitigation is enabled by default; use srbds=off to opt-out. Mitigation
|
|
Borislav Petkov |
5415e7 |
status can be checked from below file:
|
|
Borislav Petkov |
5415e7 |
|
|
Borislav Petkov |
5415e7 |
/sys/devices/system/cpu/vulnerabilities/srbds
|
|
Borislav Petkov |
5415e7 |
|
|
Borislav Petkov |
5415e7 |
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
|
|
Borislav Petkov |
5415e7 |
Signed-off-by: Borislav Petkov <bp@suse.de>
|
|
Borislav Petkov |
5415e7 |
---
|
|
Borislav Petkov |
5415e7 |
arch/x86/kernel/cpu/common.c | 10 ++++++++--
|
|
Borislav Petkov |
5415e7 |
1 file changed, 8 insertions(+), 2 deletions(-)
|
|
Borislav Petkov |
5415e7 |
|
|
Borislav Petkov |
5415e7 |
--- a/arch/x86/kernel/cpu/common.c
|
|
Borislav Petkov |
5415e7 |
+++ b/arch/x86/kernel/cpu/common.c
|
|
Borislav Petkov |
5415e7 |
@@ -1005,6 +1005,8 @@ static const __initconst struct x86_cpu_
|
|
Borislav Petkov |
5415e7 |
#define SRBDS BIT(0)
|
|
Borislav Petkov |
5415e7 |
/* CPU is affected by X86_BUG_MMIO_STALE_DATA */
|
|
Borislav Petkov |
5415e7 |
#define MMIO BIT(1)
|
|
Borislav Petkov |
5415e7 |
+/* CPU is affected by Shared Buffers Data Sampling (SBDS), a variant of X86_BUG_MMIO_STALE_DATA */
|
|
Borislav Petkov |
5415e7 |
+#define MMIO_SBDS BIT(2)
|
|
Borislav Petkov |
5415e7 |
|
|
Borislav Petkov |
5415e7 |
static const struct x86_cpu_id cpu_vuln_blacklist[] __initconst = {
|
|
Borislav Petkov |
5415e7 |
VULNBL_INTEL_STEPPINGS(IVYBRIDGE, X86_STEPPING_ANY, SRBDS),
|
|
Borislav Petkov |
5415e7 |
@@ -1026,7 +1028,7 @@ static const struct x86_cpu_id cpu_vuln_
|
|
Borislav Petkov |
5415e7 |
VULNBL_INTEL_STEPPINGS(KABYLAKE_L, X86_STEPPINGS(0x0, 0x8), SRBDS),
|
|
Borislav Petkov |
5415e7 |
VULNBL_INTEL_STEPPINGS(KABYLAKE, X86_STEPPINGS(0x9, 0xD), SRBDS | MMIO),
|
|
Borislav Petkov |
5415e7 |
VULNBL_INTEL_STEPPINGS(KABYLAKE, X86_STEPPINGS(0x0, 0x8), SRBDS),
|
|
Borislav Petkov |
5415e7 |
- VULNBL_INTEL_STEPPINGS(ICELAKE_L, X86_STEPPINGS(0x5, 0x5), MMIO),
|
|
Borislav Petkov |
5415e7 |
+ VULNBL_INTEL_STEPPINGS(ICELAKE_L, X86_STEPPINGS(0x5, 0x5), MMIO | MMIO_SBDS),
|
|
Borislav Petkov |
5415e7 |
VULNBL_INTEL_STEPPINGS(ICELAKE_XEON_D, X86_STEPPINGS(0x1, 0x1), MMIO),
|
|
Borislav Petkov |
5415e7 |
VULNBL_INTEL_STEPPINGS(ICELAKE_X, X86_STEPPINGS(0x4, 0x6), MMIO),
|
|
Borislav Petkov |
5415e7 |
VULNBL_INTEL_STEPPINGS(ATOM_TREMONT_D, X86_STEPPING_ANY, MMIO),
|
|
Borislav Petkov |
5415e7 |
@@ -1108,10 +1110,14 @@ static void __init cpu_set_bug_bits(stru
|
|
Borislav Petkov |
5415e7 |
/*
|
|
Borislav Petkov |
5415e7 |
* SRBDS affects CPUs which support RDRAND or RDSEED and are listed
|
|
Borislav Petkov |
5415e7 |
* in the vulnerability blacklist.
|
|
Borislav Petkov |
5415e7 |
+ *
|
|
Borislav Petkov |
5415e7 |
+ * Some of the implications and mitigation of Shared Buffers Data
|
|
Borislav Petkov |
5415e7 |
+ * Sampling (SBDS) are similar to SRBDS. Give SBDS same treatment as
|
|
Borislav Petkov |
5415e7 |
+ * SRBDS.
|
|
Borislav Petkov |
5415e7 |
*/
|
|
Borislav Petkov |
5415e7 |
if ((cpu_has(c, X86_FEATURE_RDRAND) ||
|
|
Borislav Petkov |
5415e7 |
cpu_has(c, X86_FEATURE_RDSEED)) &&
|
|
Borislav Petkov |
5415e7 |
- cpu_matches(cpu_vuln_blacklist, SRBDS))
|
|
Borislav Petkov |
5415e7 |
+ cpu_matches(cpu_vuln_blacklist, SRBDS | MMIO_SBDS))
|
|
Borislav Petkov |
5415e7 |
setup_force_cpu_bug(X86_BUG_SRBDS);
|
|
Borislav Petkov |
5415e7 |
|
|
Borislav Petkov |
5415e7 |
/*
|