Commit 8374a271 authored by Pawan Gupta's avatar Pawan Gupta Committed by Borislav Petkov (AMD)
Browse files

x86/bugs: Introduce cdt_possible()



In preparation to allow ITS to also enable stuffing aka Call Depth
Tracking (CDT) independently of retbleed, introduce a helper
cdt_possible().

Signed-off-by: default avatarPawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/20250611-eibrs-fix-v4-5-5ff86cac6c61@linux.intel.com
parent 7e44909e
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -1119,6 +1119,19 @@ early_param("nospectre_v1", nospectre_v1_cmdline);

enum spectre_v2_mitigation spectre_v2_enabled __ro_after_init = SPECTRE_V2_NONE;

/* Depends on spectre_v2 mitigation selected already */
static inline bool cdt_possible(enum spectre_v2_mitigation mode)
{
	if (!IS_ENABLED(CONFIG_MITIGATION_CALL_DEPTH_TRACKING) ||
	    !IS_ENABLED(CONFIG_MITIGATION_RETPOLINE))
		return false;

	if (mode == SPECTRE_V2_RETPOLINE)
		return true;

	return false;
}

#undef pr_fmt
#define pr_fmt(fmt)     "RETBleed: " fmt

@@ -1267,7 +1280,7 @@ static void __init retbleed_update_mitigation(void)
		retbleed_mitigation = RETBLEED_MITIGATION_STUFF;

	if (retbleed_mitigation == RETBLEED_MITIGATION_STUFF &&
	    spectre_v2_enabled != SPECTRE_V2_RETPOLINE) {
	    !cdt_possible(spectre_v2_enabled)) {
		pr_err("WARNING: retbleed=stuff depends on spectre_v2=retpoline\n");
		retbleed_mitigation = RETBLEED_MITIGATION_NONE;
	}