Currently, if there is no spectre_v2= or nospectre_v2 specified in the boot parameter, the kernel will automatically choose mitigation by default. However, when selecting the auto mode, it doesn't check whether the retpoline has been built in the kernel. Thus, if someone built a kernel without CONFIG_RETPOLINE and booted the system without specifying any spectre_v2 kernel parameters, the kernel would still report that it has enabled a minimal retpoline mitigation which is not the case. This patch adds the checking of CONFIG_RETPOLINE option under the 'auto' mode to fix it.
Signed-off-by: Chen Baozi <c...@baozis.org> --- arch/x86/kernel/cpu/bugs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index 390b3dc3d438..70b7d17426eb 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -193,7 +193,9 @@ static void __init spectre_v2_select_mitigation(void) case SPECTRE_V2_CMD_FORCE: /* FALLTRHU */ case SPECTRE_V2_CMD_AUTO: - goto retpoline_auto; + if (IS_ENABLED(CONFIG_RETPOLINE)) + goto retpoline_auto; + break; case SPECTRE_V2_CMD_RETPOLINE_AMD: if (IS_ENABLED(CONFIG_RETPOLINE)) -- 2.13.5 (Apple Git-94)