Skip to content

Commit 9061747

Browse files
committed
Merge tag 'x86_bugs_for_v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 speculation mitigation updates from Borislav Petkov: - Some preparatory work to convert the mitigations machinery to mitigating attack vectors instead of single vulnerabilities - Untangle and remove a now unneeded X86_FEATURE_USE_IBPB flag - Add support for a Zen5-specific SRSO mitigation - Cleanups and minor improvements * tag 'x86_bugs_for_v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2 x86/bugs: Use the cpu_smt_possible() helper instead of open-coded code x86/bugs: Add AUTO mitigations for mds/taa/mmio/rfds x86/bugs: Relocate mds/taa/mmio/rfds defines x86/bugs: Add X86_BUG_SPECTRE_V2_USER x86/bugs: Remove X86_FEATURE_USE_IBPB KVM: nVMX: Always use IBPB to properly virtualize IBRS x86/bugs: Use a static branch to guard IBPB on vCPU switch x86/bugs: Remove the X86_FEATURE_USE_IBPB check in ib_prctl_set() x86/mm: Remove X86_FEATURE_USE_IBPB checks in cond_mitigation() x86/bugs: Move the X86_FEATURE_USE_IBPB check into callers x86/bugs: KVM: Add support for SRSO_MSR_FIX
2 parents 2d09a94 + 98fdaeb commit 9061747

File tree

13 files changed

+118
-52
lines changed

13 files changed

+118
-52
lines changed

Documentation/admin-guide/hw-vuln/srso.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,20 @@ The possible values in this file are:
104104

105105
(spec_rstack_overflow=ibpb-vmexit)
106106

107+
* 'Mitigation: Reduced Speculation':
107108

109+
This mitigation gets automatically enabled when the above one "IBPB on
110+
VMEXIT" has been selected and the CPU supports the BpSpecReduce bit.
111+
112+
It gets automatically enabled on machines which have the
113+
SRSO_USER_KERNEL_NO=1 CPUID bit. In that case, the code logic is to switch
114+
to the above =ibpb-vmexit mitigation because the user/kernel boundary is
115+
not affected anymore and thus "safe RET" is not needed.
116+
117+
After enabling the IBPB on VMEXIT mitigation option, the BpSpecReduce bit
118+
is detected (functionality present on all such machines) and that
119+
practically overrides IBPB on VMEXIT as it has a lot less performance
120+
impact and takes care of the guest->host attack vector too.
108121

109122
In order to exploit vulnerability, an attacker needs to:
110123

Documentation/admin-guide/kernel-parameters.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6585,6 +6585,8 @@
65856585

65866586
Selecting 'on' will also enable the mitigation
65876587
against user space to user space task attacks.
6588+
Selecting specific mitigation does not force enable
6589+
user mitigations.
65886590

65896591
Selecting 'off' will disable both the kernel and
65906592
the user space protections.

arch/x86/include/asm/cpufeatures.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,6 @@
202202
#define X86_FEATURE_MBA ( 7*32+18) /* "mba" Memory Bandwidth Allocation */
203203
#define X86_FEATURE_RSB_CTXSW ( 7*32+19) /* Fill RSB on context switches */
204204
#define X86_FEATURE_PERFMON_V2 ( 7*32+20) /* "perfmon_v2" AMD Performance Monitoring Version 2 */
205-
#define X86_FEATURE_USE_IBPB ( 7*32+21) /* Indirect Branch Prediction Barrier enabled */
206205
#define X86_FEATURE_USE_IBRS_FW ( 7*32+22) /* Use IBRS during runtime firmware calls */
207206
#define X86_FEATURE_SPEC_STORE_BYPASS_DISABLE ( 7*32+23) /* Disable Speculative Store Bypass. */
208207
#define X86_FEATURE_LS_CFG_SSBD ( 7*32+24) /* AMD SSBD implementation via LS_CFG MSR */
@@ -461,6 +460,10 @@
461460
#define X86_FEATURE_IBPB_BRTYPE (20*32+28) /* MSR_PRED_CMD[IBPB] flushes all branch type predictions */
462461
#define X86_FEATURE_SRSO_NO (20*32+29) /* CPU is not affected by SRSO */
463462
#define X86_FEATURE_SRSO_USER_KERNEL_NO (20*32+30) /* CPU is not affected by SRSO across user/kernel boundaries */
463+
#define X86_FEATURE_SRSO_BP_SPEC_REDUCE (20*32+31) /*
464+
* BP_CFG[BpSpecReduce] can be used to mitigate SRSO for VMs.
465+
* (SRSO_MSR_FIX in the official doc).
466+
*/
464467

465468
/*
466469
* Extended auxiliary flags: Linux defined - for features scattered in various
@@ -527,4 +530,5 @@
527530
#define X86_BUG_RFDS X86_BUG(1*32 + 2) /* "rfds" CPU is vulnerable to Register File Data Sampling */
528531
#define X86_BUG_BHI X86_BUG(1*32 + 3) /* "bhi" CPU is affected by Branch History Injection */
529532
#define X86_BUG_IBPB_NO_RET X86_BUG(1*32 + 4) /* "ibpb_no_ret" IBPB omits return target predictions */
533+
#define X86_BUG_SPECTRE_V2_USER X86_BUG(1*32 + 5) /* "spectre_v2_user" CPU is affected by Spectre variant 2 attack between user processes */
530534
#endif /* _ASM_X86_CPUFEATURES_H */

arch/x86/include/asm/msr-index.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,7 @@
723723

724724
/* Zen4 */
725725
#define MSR_ZEN4_BP_CFG 0xc001102e
726+
#define MSR_ZEN4_BP_CFG_BP_SPEC_REDUCE_BIT 4
726727
#define MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT 5
727728

728729
/* Fam 19h MSRs */

arch/x86/include/asm/nospec-branch.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ extern u64 x86_pred_cmd;
522522

523523
static inline void indirect_branch_prediction_barrier(void)
524524
{
525-
alternative_msr_write(MSR_IA32_PRED_CMD, x86_pred_cmd, X86_FEATURE_USE_IBPB);
525+
alternative_msr_write(MSR_IA32_PRED_CMD, x86_pred_cmd, X86_FEATURE_IBPB);
526526
}
527527

528528
/* The Intel SPEC CTRL MSR base value cache */
@@ -559,6 +559,8 @@ DECLARE_STATIC_KEY_FALSE(switch_to_cond_stibp);
559559
DECLARE_STATIC_KEY_FALSE(switch_mm_cond_ibpb);
560560
DECLARE_STATIC_KEY_FALSE(switch_mm_always_ibpb);
561561

562+
DECLARE_STATIC_KEY_FALSE(switch_vcpu_ibpb);
563+
562564
DECLARE_STATIC_KEY_FALSE(mds_idle_clear);
563565

564566
DECLARE_STATIC_KEY_FALSE(switch_mm_cond_l1d_flush);

arch/x86/include/asm/processor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -745,6 +745,7 @@ extern enum l1tf_mitigations l1tf_mitigation;
745745

746746
enum mds_mitigations {
747747
MDS_MITIGATION_OFF,
748+
MDS_MITIGATION_AUTO,
748749
MDS_MITIGATION_FULL,
749750
MDS_MITIGATION_VMWERV,
750751
};

arch/x86/kernel/cpu/bugs.c

Lines changed: 77 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ DEFINE_STATIC_KEY_FALSE(switch_mm_cond_ibpb);
113113
/* Control unconditional IBPB in switch_mm() */
114114
DEFINE_STATIC_KEY_FALSE(switch_mm_always_ibpb);
115115

116+
/* Control IBPB on vCPU load */
117+
DEFINE_STATIC_KEY_FALSE(switch_vcpu_ibpb);
118+
EXPORT_SYMBOL_GPL(switch_vcpu_ibpb);
119+
116120
/* Control MDS CPU buffer clear before idling (halt, mwait) */
117121
DEFINE_STATIC_KEY_FALSE(mds_idle_clear);
118122
EXPORT_SYMBOL_GPL(mds_idle_clear);
@@ -234,7 +238,7 @@ static void x86_amd_ssb_disable(void)
234238

235239
/* Default mitigation for MDS-affected CPUs */
236240
static enum mds_mitigations mds_mitigation __ro_after_init =
237-
IS_ENABLED(CONFIG_MITIGATION_MDS) ? MDS_MITIGATION_FULL : MDS_MITIGATION_OFF;
241+
IS_ENABLED(CONFIG_MITIGATION_MDS) ? MDS_MITIGATION_AUTO : MDS_MITIGATION_OFF;
238242
static bool mds_nosmt __ro_after_init = false;
239243

240244
static const char * const mds_strings[] = {
@@ -243,13 +247,50 @@ static const char * const mds_strings[] = {
243247
[MDS_MITIGATION_VMWERV] = "Vulnerable: Clear CPU buffers attempted, no microcode",
244248
};
245249

250+
enum taa_mitigations {
251+
TAA_MITIGATION_OFF,
252+
TAA_MITIGATION_AUTO,
253+
TAA_MITIGATION_UCODE_NEEDED,
254+
TAA_MITIGATION_VERW,
255+
TAA_MITIGATION_TSX_DISABLED,
256+
};
257+
258+
/* Default mitigation for TAA-affected CPUs */
259+
static enum taa_mitigations taa_mitigation __ro_after_init =
260+
IS_ENABLED(CONFIG_MITIGATION_TAA) ? TAA_MITIGATION_AUTO : TAA_MITIGATION_OFF;
261+
262+
enum mmio_mitigations {
263+
MMIO_MITIGATION_OFF,
264+
MMIO_MITIGATION_AUTO,
265+
MMIO_MITIGATION_UCODE_NEEDED,
266+
MMIO_MITIGATION_VERW,
267+
};
268+
269+
/* Default mitigation for Processor MMIO Stale Data vulnerabilities */
270+
static enum mmio_mitigations mmio_mitigation __ro_after_init =
271+
IS_ENABLED(CONFIG_MITIGATION_MMIO_STALE_DATA) ? MMIO_MITIGATION_AUTO : MMIO_MITIGATION_OFF;
272+
273+
enum rfds_mitigations {
274+
RFDS_MITIGATION_OFF,
275+
RFDS_MITIGATION_AUTO,
276+
RFDS_MITIGATION_VERW,
277+
RFDS_MITIGATION_UCODE_NEEDED,
278+
};
279+
280+
/* Default mitigation for Register File Data Sampling */
281+
static enum rfds_mitigations rfds_mitigation __ro_after_init =
282+
IS_ENABLED(CONFIG_MITIGATION_RFDS) ? RFDS_MITIGATION_AUTO : RFDS_MITIGATION_OFF;
283+
246284
static void __init mds_select_mitigation(void)
247285
{
248286
if (!boot_cpu_has_bug(X86_BUG_MDS) || cpu_mitigations_off()) {
249287
mds_mitigation = MDS_MITIGATION_OFF;
250288
return;
251289
}
252290

291+
if (mds_mitigation == MDS_MITIGATION_AUTO)
292+
mds_mitigation = MDS_MITIGATION_FULL;
293+
253294
if (mds_mitigation == MDS_MITIGATION_FULL) {
254295
if (!boot_cpu_has(X86_FEATURE_MD_CLEAR))
255296
mds_mitigation = MDS_MITIGATION_VMWERV;
@@ -286,16 +327,6 @@ early_param("mds", mds_cmdline);
286327
#undef pr_fmt
287328
#define pr_fmt(fmt) "TAA: " fmt
288329

289-
enum taa_mitigations {
290-
TAA_MITIGATION_OFF,
291-
TAA_MITIGATION_UCODE_NEEDED,
292-
TAA_MITIGATION_VERW,
293-
TAA_MITIGATION_TSX_DISABLED,
294-
};
295-
296-
/* Default mitigation for TAA-affected CPUs */
297-
static enum taa_mitigations taa_mitigation __ro_after_init =
298-
IS_ENABLED(CONFIG_MITIGATION_TAA) ? TAA_MITIGATION_VERW : TAA_MITIGATION_OFF;
299330
static bool taa_nosmt __ro_after_init;
300331

301332
static const char * const taa_strings[] = {
@@ -386,15 +417,6 @@ early_param("tsx_async_abort", tsx_async_abort_parse_cmdline);
386417
#undef pr_fmt
387418
#define pr_fmt(fmt) "MMIO Stale Data: " fmt
388419

389-
enum mmio_mitigations {
390-
MMIO_MITIGATION_OFF,
391-
MMIO_MITIGATION_UCODE_NEEDED,
392-
MMIO_MITIGATION_VERW,
393-
};
394-
395-
/* Default mitigation for Processor MMIO Stale Data vulnerabilities */
396-
static enum mmio_mitigations mmio_mitigation __ro_after_init =
397-
IS_ENABLED(CONFIG_MITIGATION_MMIO_STALE_DATA) ? MMIO_MITIGATION_VERW : MMIO_MITIGATION_OFF;
398420
static bool mmio_nosmt __ro_after_init = false;
399421

400422
static const char * const mmio_strings[] = {
@@ -483,16 +505,6 @@ early_param("mmio_stale_data", mmio_stale_data_parse_cmdline);
483505
#undef pr_fmt
484506
#define pr_fmt(fmt) "Register File Data Sampling: " fmt
485507

486-
enum rfds_mitigations {
487-
RFDS_MITIGATION_OFF,
488-
RFDS_MITIGATION_VERW,
489-
RFDS_MITIGATION_UCODE_NEEDED,
490-
};
491-
492-
/* Default mitigation for Register File Data Sampling */
493-
static enum rfds_mitigations rfds_mitigation __ro_after_init =
494-
IS_ENABLED(CONFIG_MITIGATION_RFDS) ? RFDS_MITIGATION_VERW : RFDS_MITIGATION_OFF;
495-
496508
static const char * const rfds_strings[] = {
497509
[RFDS_MITIGATION_OFF] = "Vulnerable",
498510
[RFDS_MITIGATION_VERW] = "Mitigation: Clear Register File",
@@ -508,6 +520,9 @@ static void __init rfds_select_mitigation(void)
508520
if (rfds_mitigation == RFDS_MITIGATION_OFF)
509521
return;
510522

523+
if (rfds_mitigation == RFDS_MITIGATION_AUTO)
524+
rfds_mitigation = RFDS_MITIGATION_VERW;
525+
511526
if (x86_arch_cap_msr & ARCH_CAP_RFDS_CLEAR)
512527
setup_force_cpu_cap(X86_FEATURE_CLEAR_CPU_BUF);
513528
else
@@ -1293,9 +1308,13 @@ static __ro_after_init enum spectre_v2_mitigation_cmd spectre_v2_cmd;
12931308
static enum spectre_v2_user_cmd __init
12941309
spectre_v2_parse_user_cmdline(void)
12951310
{
1311+
enum spectre_v2_user_cmd mode;
12961312
char arg[20];
12971313
int ret, i;
12981314

1315+
mode = IS_ENABLED(CONFIG_MITIGATION_SPECTRE_V2) ?
1316+
SPECTRE_V2_USER_CMD_AUTO : SPECTRE_V2_USER_CMD_NONE;
1317+
12991318
switch (spectre_v2_cmd) {
13001319
case SPECTRE_V2_CMD_NONE:
13011320
return SPECTRE_V2_USER_CMD_NONE;
@@ -1308,7 +1327,7 @@ spectre_v2_parse_user_cmdline(void)
13081327
ret = cmdline_find_option(boot_command_line, "spectre_v2_user",
13091328
arg, sizeof(arg));
13101329
if (ret < 0)
1311-
return SPECTRE_V2_USER_CMD_AUTO;
1330+
return mode;
13121331

13131332
for (i = 0; i < ARRAY_SIZE(v2_user_options); i++) {
13141333
if (match_option(arg, ret, v2_user_options[i].option)) {
@@ -1318,8 +1337,8 @@ spectre_v2_parse_user_cmdline(void)
13181337
}
13191338
}
13201339

1321-
pr_err("Unknown user space protection option (%s). Switching to AUTO select\n", arg);
1322-
return SPECTRE_V2_USER_CMD_AUTO;
1340+
pr_err("Unknown user space protection option (%s). Switching to default\n", arg);
1341+
return mode;
13231342
}
13241343

13251344
static inline bool spectre_v2_in_ibrs_mode(enum spectre_v2_mitigation mode)
@@ -1331,16 +1350,11 @@ static void __init
13311350
spectre_v2_user_select_mitigation(void)
13321351
{
13331352
enum spectre_v2_user_mitigation mode = SPECTRE_V2_USER_NONE;
1334-
bool smt_possible = IS_ENABLED(CONFIG_SMP);
13351353
enum spectre_v2_user_cmd cmd;
13361354

13371355
if (!boot_cpu_has(X86_FEATURE_IBPB) && !boot_cpu_has(X86_FEATURE_STIBP))
13381356
return;
13391357

1340-
if (cpu_smt_control == CPU_SMT_FORCE_DISABLED ||
1341-
cpu_smt_control == CPU_SMT_NOT_SUPPORTED)
1342-
smt_possible = false;
1343-
13441358
cmd = spectre_v2_parse_user_cmdline();
13451359
switch (cmd) {
13461360
case SPECTRE_V2_USER_CMD_NONE:
@@ -1364,7 +1378,7 @@ spectre_v2_user_select_mitigation(void)
13641378

13651379
/* Initialize Indirect Branch Prediction Barrier */
13661380
if (boot_cpu_has(X86_FEATURE_IBPB)) {
1367-
setup_force_cpu_cap(X86_FEATURE_USE_IBPB);
1381+
static_branch_enable(&switch_vcpu_ibpb);
13681382

13691383
spectre_v2_user_ibpb = mode;
13701384
switch (cmd) {
@@ -1401,7 +1415,7 @@ spectre_v2_user_select_mitigation(void)
14011415
* so allow for STIBP to be selected in those cases.
14021416
*/
14031417
if (!boot_cpu_has(X86_FEATURE_STIBP) ||
1404-
!smt_possible ||
1418+
!cpu_smt_possible() ||
14051419
(spectre_v2_in_eibrs_mode(spectre_v2_enabled) &&
14061420
!boot_cpu_has(X86_FEATURE_AUTOIBRS)))
14071421
return;
@@ -1973,6 +1987,7 @@ void cpu_bugs_smt_update(void)
19731987

19741988
switch (mds_mitigation) {
19751989
case MDS_MITIGATION_FULL:
1990+
case MDS_MITIGATION_AUTO:
19761991
case MDS_MITIGATION_VMWERV:
19771992
if (sched_smt_active() && !boot_cpu_has(X86_BUG_MSBDS_ONLY))
19781993
pr_warn_once(MDS_MSG_SMT);
@@ -1984,6 +1999,7 @@ void cpu_bugs_smt_update(void)
19841999

19852000
switch (taa_mitigation) {
19862001
case TAA_MITIGATION_VERW:
2002+
case TAA_MITIGATION_AUTO:
19872003
case TAA_MITIGATION_UCODE_NEEDED:
19882004
if (sched_smt_active())
19892005
pr_warn_once(TAA_MSG_SMT);
@@ -1995,6 +2011,7 @@ void cpu_bugs_smt_update(void)
19952011

19962012
switch (mmio_mitigation) {
19972013
case MMIO_MITIGATION_VERW:
2014+
case MMIO_MITIGATION_AUTO:
19982015
case MMIO_MITIGATION_UCODE_NEEDED:
19992016
if (sched_smt_active())
20002017
pr_warn_once(MMIO_MSG_SMT);
@@ -2522,6 +2539,7 @@ enum srso_mitigation {
25222539
SRSO_MITIGATION_SAFE_RET,
25232540
SRSO_MITIGATION_IBPB,
25242541
SRSO_MITIGATION_IBPB_ON_VMEXIT,
2542+
SRSO_MITIGATION_BP_SPEC_REDUCE,
25252543
};
25262544

25272545
enum srso_mitigation_cmd {
@@ -2539,7 +2557,8 @@ static const char * const srso_strings[] = {
25392557
[SRSO_MITIGATION_MICROCODE] = "Vulnerable: Microcode, no safe RET",
25402558
[SRSO_MITIGATION_SAFE_RET] = "Mitigation: Safe RET",
25412559
[SRSO_MITIGATION_IBPB] = "Mitigation: IBPB",
2542-
[SRSO_MITIGATION_IBPB_ON_VMEXIT] = "Mitigation: IBPB on VMEXIT only"
2560+
[SRSO_MITIGATION_IBPB_ON_VMEXIT] = "Mitigation: IBPB on VMEXIT only",
2561+
[SRSO_MITIGATION_BP_SPEC_REDUCE] = "Mitigation: Reduced Speculation"
25432562
};
25442563

25452564
static enum srso_mitigation srso_mitigation __ro_after_init = SRSO_MITIGATION_NONE;
@@ -2578,7 +2597,7 @@ static void __init srso_select_mitigation(void)
25782597
srso_cmd == SRSO_CMD_OFF) {
25792598
if (boot_cpu_has(X86_FEATURE_SBPB))
25802599
x86_pred_cmd = PRED_CMD_SBPB;
2581-
return;
2600+
goto out;
25822601
}
25832602

25842603
if (has_microcode) {
@@ -2590,7 +2609,7 @@ static void __init srso_select_mitigation(void)
25902609
*/
25912610
if (boot_cpu_data.x86 < 0x19 && !cpu_smt_possible()) {
25922611
setup_force_cpu_cap(X86_FEATURE_SRSO_NO);
2593-
return;
2612+
goto out;
25942613
}
25952614

25962615
if (retbleed_mitigation == RETBLEED_MITIGATION_IBPB) {
@@ -2670,6 +2689,12 @@ static void __init srso_select_mitigation(void)
26702689

26712690
ibpb_on_vmexit:
26722691
case SRSO_CMD_IBPB_ON_VMEXIT:
2692+
if (boot_cpu_has(X86_FEATURE_SRSO_BP_SPEC_REDUCE)) {
2693+
pr_notice("Reducing speculation to address VM/HV SRSO attack vector.\n");
2694+
srso_mitigation = SRSO_MITIGATION_BP_SPEC_REDUCE;
2695+
break;
2696+
}
2697+
26732698
if (IS_ENABLED(CONFIG_MITIGATION_IBPB_ENTRY)) {
26742699
if (has_microcode) {
26752700
setup_force_cpu_cap(X86_FEATURE_IBPB_ON_VMEXIT);
@@ -2691,7 +2716,15 @@ static void __init srso_select_mitigation(void)
26912716
}
26922717

26932718
out:
2694-
pr_info("%s\n", srso_strings[srso_mitigation]);
2719+
/*
2720+
* Clear the feature flag if this mitigation is not selected as that
2721+
* feature flag controls the BpSpecReduce MSR bit toggling in KVM.
2722+
*/
2723+
if (srso_mitigation != SRSO_MITIGATION_BP_SPEC_REDUCE)
2724+
setup_clear_cpu_cap(X86_FEATURE_SRSO_BP_SPEC_REDUCE);
2725+
2726+
if (srso_mitigation != SRSO_MITIGATION_NONE)
2727+
pr_info("%s\n", srso_strings[srso_mitigation]);
26952728
}
26962729

26972730
#undef pr_fmt

arch/x86/kernel/cpu/common.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1332,8 +1332,10 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
13321332

13331333
setup_force_cpu_bug(X86_BUG_SPECTRE_V1);
13341334

1335-
if (!cpu_matches(cpu_vuln_whitelist, NO_SPECTRE_V2))
1335+
if (!cpu_matches(cpu_vuln_whitelist, NO_SPECTRE_V2)) {
13361336
setup_force_cpu_bug(X86_BUG_SPECTRE_V2);
1337+
setup_force_cpu_bug(X86_BUG_SPECTRE_V2_USER);
1338+
}
13371339

13381340
if (!cpu_matches(cpu_vuln_whitelist, NO_SSB) &&
13391341
!(x86_arch_cap_msr & ARCH_CAP_SSB_NO) &&

0 commit comments

Comments
 (0)