02c587733c
CONFIG_KASAN_STACK and CONFIG_KASAN_STACK_ENABLE both enable KASAN stack
instrumentation, but we should only need one config, so that we remove
CONFIG_KASAN_STACK_ENABLE and make CONFIG_KASAN_STACK workable. see [1].
When enable KASAN stack instrumentation, then for gcc we could do no
prompt and default value y, and for clang prompt and default value n.
This patch fixes the following compilation warning:
include/linux/kasan.h:333:30: warning: 'CONFIG_KASAN_STACK' is not defined, evaluates to 0 [-Wundef]
[akpm@linux-foundation.org: fix merge snafu]
Link: https://bugzilla.kernel.org/show_bug.cgi?id=210221 [1]
Link: https://lkml.kernel.org/r/20210226012531.29231-1-walter-zh.wu@mediatek.com
Fixes: d9b571c885
("kasan: fix KASAN_STACK dependency for HW_TAGS")
Signed-off-by: Walter Wu <walter-zh.wu@mediatek.com>
Suggested-by: Dmitry Vyukov <dvyukov@google.com>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Andrey Konovalov <andreyknvl@google.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
58 lines
1.6 KiB
Makefile
58 lines
1.6 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
CFLAGS_KASAN_NOSANITIZE := -fno-builtin
|
|
KASAN_SHADOW_OFFSET ?= $(CONFIG_KASAN_SHADOW_OFFSET)
|
|
|
|
cc-param = $(call cc-option, -mllvm -$(1), $(call cc-option, --param $(1)))
|
|
|
|
ifdef CONFIG_KASAN_STACK
|
|
stack_enable := 1
|
|
else
|
|
stack_enable := 0
|
|
endif
|
|
|
|
ifdef CONFIG_KASAN_GENERIC
|
|
|
|
ifdef CONFIG_KASAN_INLINE
|
|
call_threshold := 10000
|
|
else
|
|
call_threshold := 0
|
|
endif
|
|
|
|
CFLAGS_KASAN_MINIMAL := -fsanitize=kernel-address
|
|
|
|
# -fasan-shadow-offset fails without -fsanitize
|
|
CFLAGS_KASAN_SHADOW := $(call cc-option, -fsanitize=kernel-address \
|
|
-fasan-shadow-offset=$(KASAN_SHADOW_OFFSET), \
|
|
$(call cc-option, -fsanitize=kernel-address \
|
|
-mllvm -asan-mapping-offset=$(KASAN_SHADOW_OFFSET)))
|
|
|
|
ifeq ($(strip $(CFLAGS_KASAN_SHADOW)),)
|
|
CFLAGS_KASAN := $(CFLAGS_KASAN_MINIMAL)
|
|
else
|
|
# Now add all the compiler specific options that are valid standalone
|
|
CFLAGS_KASAN := $(CFLAGS_KASAN_SHADOW) \
|
|
$(call cc-param,asan-globals=1) \
|
|
$(call cc-param,asan-instrumentation-with-call-threshold=$(call_threshold)) \
|
|
$(call cc-param,asan-stack=$(stack_enable)) \
|
|
$(call cc-param,asan-instrument-allocas=1)
|
|
endif
|
|
|
|
endif # CONFIG_KASAN_GENERIC
|
|
|
|
ifdef CONFIG_KASAN_SW_TAGS
|
|
|
|
ifdef CONFIG_KASAN_INLINE
|
|
instrumentation_flags := $(call cc-param,hwasan-mapping-offset=$(KASAN_SHADOW_OFFSET))
|
|
else
|
|
instrumentation_flags := $(call cc-param,hwasan-instrument-with-calls=1)
|
|
endif
|
|
|
|
CFLAGS_KASAN := -fsanitize=kernel-hwaddress \
|
|
$(call cc-param,hwasan-instrument-stack=$(stack_enable)) \
|
|
$(call cc-param,hwasan-use-short-granules=0) \
|
|
$(instrumentation_flags)
|
|
|
|
endif # CONFIG_KASAN_SW_TAGS
|
|
|
|
export CFLAGS_KASAN CFLAGS_KASAN_NOSANITIZE
|