summaryrefslogtreecommitdiffstats
path: root/arch/x86/power
diff options
context:
space:
mode:
authorSami Tolvanen <samitolvanen@google.com>2020-09-16 21:57:56 +0200
committerKees Cook <keescook@chromium.org>2021-02-23 21:46:58 +0100
commitd2dcd3e37475a66012f9702c4f9f0863ccdae716 (patch)
tree2830346f66896f32a6fe5f87b46b50fb6e8c123b /arch/x86/power
parentx86, vdso: disable LTO only for vDSO (diff)
downloadlinux-d2dcd3e37475a66012f9702c4f9f0863ccdae716.tar.xz
linux-d2dcd3e37475a66012f9702c4f9f0863ccdae716.zip
x86, cpu: disable LTO for cpu.c
Clang incorrectly inlines functions with differing stack protector attributes, which breaks __restore_processor_state() that relies on stack protector being disabled. This change disables LTO for cpu.c to work aroung the bug. Link: https://bugs.llvm.org/show_bug.cgi?id=47479 Suggested-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Diffstat (limited to 'arch/x86/power')
-rw-r--r--arch/x86/power/Makefile4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/power/Makefile b/arch/x86/power/Makefile
index 6907b523e856..5f711a441623 100644
--- a/arch/x86/power/Makefile
+++ b/arch/x86/power/Makefile
@@ -5,5 +5,9 @@ OBJECT_FILES_NON_STANDARD_hibernate_asm_$(BITS).o := y
# itself be stack-protected
CFLAGS_cpu.o := -fno-stack-protector
+# Clang may incorrectly inline functions with stack protector enabled into
+# __restore_processor_state(): https://bugs.llvm.org/show_bug.cgi?id=47479
+CFLAGS_REMOVE_cpu.o := $(CC_FLAGS_LTO)
+
obj-$(CONFIG_PM_SLEEP) += cpu.o
obj-$(CONFIG_HIBERNATION) += hibernate_$(BITS).o hibernate_asm_$(BITS).o hibernate.o