Skip to content

Commit ca734cc

Browse files
xairytorvalds
authored andcommitted
kasan: fix clang compilation warning due to stack protector
KASAN uses a single cc-option invocation to disable both conserve-stack and stack-protector flags. The former flag is not present in Clang, which causes cc-option to fail, and results in stack-protector being enabled. Fix by using separate cc-option calls for each flag. Also collect all flags in a variable to avoid calling cc-option multiple times for different files. Reported-by: Qian Cai <[email protected]> Signed-off-by: Andrey Konovalov <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Reviewed-by: Marco Elver <[email protected]> Link: http://lkml.kernel.org/r/c2f0c8e4048852ae014f4a391d96ca42d27e3255.1590779332.git.andreyknvl@google.com Signed-off-by: Linus Torvalds <[email protected]>
1 parent 7f0a002 commit ca734cc

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

mm/kasan/Makefile

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,19 @@ CFLAGS_REMOVE_tags_report.o = $(CC_FLAGS_FTRACE)
1515

1616
# Function splitter causes unnecessary splits in __asan_load1/__asan_store1
1717
# see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63533
18-
CFLAGS_common.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector) -DDISABLE_BRANCH_PROFILING
19-
CFLAGS_generic.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector) -DDISABLE_BRANCH_PROFILING
20-
CFLAGS_generic_report.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector) -DDISABLE_BRANCH_PROFILING
21-
CFLAGS_init.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector) -DDISABLE_BRANCH_PROFILING
22-
CFLAGS_quarantine.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector) -DDISABLE_BRANCH_PROFILING
23-
CFLAGS_report.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector) -DDISABLE_BRANCH_PROFILING
24-
CFLAGS_tags.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector) -DDISABLE_BRANCH_PROFILING
25-
CFLAGS_tags_report.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector) -DDISABLE_BRANCH_PROFILING
18+
CC_FLAGS_KASAN_RUNTIME := $(call cc-option, -fno-conserve-stack)
19+
CC_FLAGS_KASAN_RUNTIME += $(call cc-option, -fno-stack-protector)
20+
# Disable branch tracing to avoid recursion.
21+
CC_FLAGS_KASAN_RUNTIME += -DDISABLE_BRANCH_PROFILING
22+
23+
CFLAGS_common.o := $(CC_FLAGS_KASAN_RUNTIME)
24+
CFLAGS_generic.o := $(CC_FLAGS_KASAN_RUNTIME)
25+
CFLAGS_generic_report.o := $(CC_FLAGS_KASAN_RUNTIME)
26+
CFLAGS_init.o := $(CC_FLAGS_KASAN_RUNTIME)
27+
CFLAGS_quarantine.o := $(CC_FLAGS_KASAN_RUNTIME)
28+
CFLAGS_report.o := $(CC_FLAGS_KASAN_RUNTIME)
29+
CFLAGS_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
30+
CFLAGS_tags_report.o := $(CC_FLAGS_KASAN_RUNTIME)
2631

2732
obj-$(CONFIG_KASAN) := common.o init.o report.o
2833
obj-$(CONFIG_KASAN_GENERIC) += generic.o generic_report.o quarantine.o

0 commit comments

Comments
 (0)