x86: Add straight-line-speculation mitigation
authorPeter Zijlstra <peterz@infradead.org>
Sat, 4 Dec 2021 13:43:44 +0000 (14:43 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 15 May 2022 18:18:51 +0000 (20:18 +0200)
commit370d33da35e31c1544eb77bcf2539f09b1064b9c
treee9f521fe06556cd39cdb1b888ef466e944076c82
parentd11f96d0c0c30e6ed73049c752a1ca7621e7062f
x86: Add straight-line-speculation mitigation

[ Upstream commit e463a09af2f0677b9485a7e8e4e70b396b2ffb6f ]

Make use of an upcoming GCC feature to mitigate
straight-line-speculation for x86:

  https://gcc.gnu.org/g:53a643f8568067d7700a9f2facc8ba39974973d3
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102952
  https://bugs.llvm.org/show_bug.cgi?id=52323

It's built tested on x86_64-allyesconfig using GCC-12 and GCC-11.

Maintenance overhead of this should be fairly low due to objtool
validation.

Size overhead of all these additional int3 instructions comes to:

     text    data     bss     dec     hex filename
  22267751 6933356 2011368 31212475 1dc43bb defconfig-build/vmlinux
  22804126 6933356 1470696 31208178 1dc32f2 defconfig-build/vmlinux.sls

Or roughly 2.4% additional text.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/20211204134908.140103474@infradead.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/Kconfig
arch/x86/Makefile
arch/x86/include/asm/linkage.h
arch/x86/include/asm/static_call.h
arch/x86/kernel/ftrace.c
arch/x86/kernel/static_call.c
arch/x86/lib/memmove_64.S
arch/x86/lib/retpoline.S
scripts/Makefile.build
scripts/link-vmlinux.sh