Re: [PATCH 1/3] retpolines: Only enable retpoline when compiler support it
From: Zhenzhong Duan
Date: Wed Oct 31 2018 - 00:58:53 EST
On 2018/10/30 16:32, Peter Zijlstra wrote:
On Mon, Oct 29, 2018 at 11:55:04PM -0700, Zhenzhong Duan wrote:
Since retpoline capable compilers are widely available, make
CONFIG_RETPOLINE hard depend on it.
Change KBUILD to use CONFIG_RETPOLINE_SUPPORT to avoid conflict with
CONFIG_RETPOLINE which is used by kernel.
With all that stuff, the check of RETPOLINE is changed to
CONFIG_RETPOLINE.
So what happens when we select CONFIG_RETPOLINE but do not have
RETPOLINE_SUPPORT ? From a quick reading we'll silently build a
!retpoline kernel. I would expect a build failure.
CONFIG_RETPOLINE is only defined when CONFIG_RETPOLINE_SUPPORT is
selected. See below chunk.
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -221,9 +221,10 @@ KBUILD_CFLAGS += -Wno-sign-compare
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
# Avoid indirect branches in kernel to deal with Spectre
-ifdef CONFIG_RETPOLINE
+ifdef CONFIG_RETPOLINE_SUPPORT
ifneq ($(RETPOLINE_CFLAGS),)
- KBUILD_CFLAGS += $(RETPOLINE_CFLAGS) -DRETPOLINE
+ KBUILD_CFLAGS += $(RETPOLINE_CFLAGS) -DCONFIG_RETPOLINE
+ KBUILD_AFLAGS += -DCONFIG_RETPOLINE
endif
endif
Thanks
Zhenzhong