x86/retpoline: Fix forcing me to update my compiler
diff mbox series

Message ID 20181208123816.22952-1-k.marinushkin@gmail.com
State New, archived
Headers show
Series
  • x86/retpoline: Fix forcing me to update my compiler
Related show

Commit Message

Kirill Marinushkin Dec. 8, 2018, 12:38 p.m. UTC
First problem: I cannot compile the kernel with my version of compiler

~~~~
$ make defconfig
*** Default configuration is based on 'i386_defconfig'
\#
\# configuration written to .config
\#
$ grep CONFIG_RETPOLINE .config
CONFIG_RETPOLINE=y
$ make
arch/x86/Makefile:224: *** You are building kernel with non-retpoline
compiler, please update your compiler..  Stop.
~~~~

Second problem: when I disable the feature - it cannot take effect,
because the parse-time error happens before `syncconfig`

~~~~
$ scripts/config -d RETPOLINE
$ grep CONFIG_RETPOLINE .config
\# CONFIG_RETPOLINE is not set
$ make
arch/x86/Makefile:224: *** You are building kernel with non-retpoline
compiler, please update your compiler..  Stop.
~~~~

Fixes: 4cd24de3a098 ("x86/retpoline: Make CONFIG_RETPOLINE depend on compiler support")

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Zhenzhong Duan <zhenzhong.duan@oracle.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: x86@kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: stable@vger.kernel.org
---
 arch/x86/Makefile | 3 ---
 1 file changed, 3 deletions(-)

Comments

Borislav Petkov Dec. 8, 2018, 12:42 p.m. UTC | #1
On Sat, Dec 08, 2018 at 01:38:16PM +0100, Kirill Marinushkin wrote:
> First problem: I cannot compile the kernel with my version of compiler
> 
> ~~~~
> $ make defconfig
> *** Default configuration is based on 'i386_defconfig'
> \#
> \# configuration written to .config
> \#
> $ grep CONFIG_RETPOLINE .config
> CONFIG_RETPOLINE=y
> $ make
> arch/x86/Makefile:224: *** You are building kernel with non-retpoline
> compiler, please update your compiler..  Stop.
> ~~~~

Does this help?

https://git.kernel.org/tip/25896d073d8a0403b07e6dec56f58e6c33678207
Kirill Marinushkin Dec. 8, 2018, 1:14 p.m. UTC | #2
>> First problem: I cannot compile the kernel with my version of compiler

>> Second problem: when I disable the feature - it cannot take effect,
>> because the parse-time error happens before `syncconfig`

On 12/08/18 13:42, Borislav Petkov wrote:
> Does this help?
> 
> https://git.kernel.org/tip/25896d073d8a0403b07e6dec56f58e6c33678207
> 

The patch which you mentioned fixes the second problem: now I can disable
CONFIG_RETPOLINE.
But, the first problem is still here: with defconfig and gcc v6.4.0, kernel
doesn't build, with this message:

~~~~
$ make
scripts/kconfig/conf  --syncconfig Kconfig
You are building kernel with non-retpoline compiler.
Please update your compiler.
make: *** [arch/x86/Makefile:311: checkbin] Error 1
~~~~

I don't think that this is a proper behavior. I suggest to allow compilation

Best Regards,
Kirill
Greg Kroah-Hartman Dec. 8, 2018, 1:20 p.m. UTC | #3
On Sat, Dec 08, 2018 at 02:14:47PM +0100, Kirill Marinushkin wrote:
> >> First problem: I cannot compile the kernel with my version of compiler
> 
> >> Second problem: when I disable the feature - it cannot take effect,
> >> because the parse-time error happens before `syncconfig`
> 
> On 12/08/18 13:42, Borislav Petkov wrote:
> > Does this help?
> > 
> > https://git.kernel.org/tip/25896d073d8a0403b07e6dec56f58e6c33678207
> > 
> 
> The patch which you mentioned fixes the second problem: now I can disable
> CONFIG_RETPOLINE.
> But, the first problem is still here: with defconfig and gcc v6.4.0, kernel
> doesn't build, with this message:
> 
> ~~~~
> $ make
> scripts/kconfig/conf  --syncconfig Kconfig
> You are building kernel with non-retpoline compiler.
> Please update your compiler.
> make: *** [arch/x86/Makefile:311: checkbin] Error 1
> ~~~~
> 
> I don't think that this is a proper behavior. I suggest to allow compilation

No, you asked for retpoline, and your compiler can not provide that, so
erroring out is the correct behavior.  It is worse for you to have an
option enabled and it not being enabled just because your compiler does
not support it.  That way you do not have the false sense of security.

thanks,

greg k-h

Patch
diff mbox series

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index f5d7f4134524..26a2198c59b3 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -220,9 +220,6 @@  KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
 
 # Avoid indirect branches in kernel to deal with Spectre
 ifdef CONFIG_RETPOLINE
-ifeq ($(RETPOLINE_CFLAGS),)
-  $(error You are building kernel with non-retpoline compiler, please update your compiler.)
-endif
   KBUILD_CFLAGS += $(RETPOLINE_CFLAGS)
 endif