kasan: remove redundant config option
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>
This commit is contained in:
Родитель
5c595ac4c7
Коммит
02c587733c
|
@ -134,7 +134,7 @@ SYM_FUNC_START(_cpu_resume)
|
|||
*/
|
||||
bl cpu_do_resume
|
||||
|
||||
#if defined(CONFIG_KASAN) && CONFIG_KASAN_STACK
|
||||
#if defined(CONFIG_KASAN) && defined(CONFIG_KASAN_STACK)
|
||||
mov x0, sp
|
||||
bl kasan_unpoison_task_stack_below
|
||||
#endif
|
||||
|
|
|
@ -115,7 +115,7 @@ SYM_FUNC_START(do_suspend_lowlevel)
|
|||
movq pt_regs_r14(%rax), %r14
|
||||
movq pt_regs_r15(%rax), %r15
|
||||
|
||||
#if defined(CONFIG_KASAN) && CONFIG_KASAN_STACK
|
||||
#if defined(CONFIG_KASAN) && defined(CONFIG_KASAN_STACK)
|
||||
/*
|
||||
* The suspend path may have poisoned some areas deeper in the stack,
|
||||
* which we now need to unpoison.
|
||||
|
|
|
@ -330,7 +330,7 @@ static inline bool kasan_check_byte(const void *address)
|
|||
|
||||
#endif /* CONFIG_KASAN */
|
||||
|
||||
#if defined(CONFIG_KASAN) && CONFIG_KASAN_STACK
|
||||
#if defined(CONFIG_KASAN) && defined(CONFIG_KASAN_STACK)
|
||||
void kasan_unpoison_task_stack(struct task_struct *task);
|
||||
#else
|
||||
static inline void kasan_unpoison_task_stack(struct task_struct *task) {}
|
||||
|
|
|
@ -138,9 +138,10 @@ config KASAN_INLINE
|
|||
|
||||
endchoice
|
||||
|
||||
config KASAN_STACK_ENABLE
|
||||
config KASAN_STACK
|
||||
bool "Enable stack instrumentation (unsafe)" if CC_IS_CLANG && !COMPILE_TEST
|
||||
depends on KASAN_GENERIC || KASAN_SW_TAGS
|
||||
default y if CC_IS_GCC
|
||||
help
|
||||
The LLVM stack address sanitizer has a know problem that
|
||||
causes excessive stack usage in a lot of functions, see
|
||||
|
@ -154,12 +155,6 @@ config KASAN_STACK_ENABLE
|
|||
CONFIG_COMPILE_TEST. On gcc it is assumed to always be safe
|
||||
to use and enabled by default.
|
||||
|
||||
config KASAN_STACK
|
||||
int
|
||||
depends on KASAN_GENERIC || KASAN_SW_TAGS
|
||||
default 1 if KASAN_STACK_ENABLE || CC_IS_GCC
|
||||
default 0
|
||||
|
||||
config KASAN_SW_TAGS_IDENTIFY
|
||||
bool "Enable memory corruption identification"
|
||||
depends on KASAN_SW_TAGS
|
||||
|
|
|
@ -63,7 +63,7 @@ void __kasan_unpoison_range(const void *address, size_t size)
|
|||
kasan_unpoison(address, size);
|
||||
}
|
||||
|
||||
#if CONFIG_KASAN_STACK
|
||||
#ifdef CONFIG_KASAN_STACK
|
||||
/* Unpoison the entire stack for a task. */
|
||||
void kasan_unpoison_task_stack(struct task_struct *task)
|
||||
{
|
||||
|
|
|
@ -231,7 +231,7 @@ void *kasan_find_first_bad_addr(void *addr, size_t size);
|
|||
const char *kasan_get_bug_type(struct kasan_access_info *info);
|
||||
void kasan_metadata_fetch_row(char *buffer, void *row);
|
||||
|
||||
#if defined(CONFIG_KASAN_GENERIC) && CONFIG_KASAN_STACK
|
||||
#if defined(CONFIG_KASAN_GENERIC) && defined(CONFIG_KASAN_STACK)
|
||||
void kasan_print_address_stack_frame(const void *addr);
|
||||
#else
|
||||
static inline void kasan_print_address_stack_frame(const void *addr) { }
|
||||
|
|
|
@ -128,7 +128,7 @@ void kasan_metadata_fetch_row(char *buffer, void *row)
|
|||
memcpy(buffer, kasan_mem_to_shadow(row), META_BYTES_PER_ROW);
|
||||
}
|
||||
|
||||
#if CONFIG_KASAN_STACK
|
||||
#ifdef CONFIG_KASAN_STACK
|
||||
static bool __must_check tokenize_frame_descr(const char **frame_descr,
|
||||
char *token, size_t max_tok_len,
|
||||
unsigned long *value)
|
||||
|
|
|
@ -4,6 +4,12 @@ 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
|
||||
|
@ -27,7 +33,7 @@ else
|
|||
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=$(CONFIG_KASAN_STACK)) \
|
||||
$(call cc-param,asan-stack=$(stack_enable)) \
|
||||
$(call cc-param,asan-instrument-allocas=1)
|
||||
endif
|
||||
|
||||
|
@ -42,7 +48,7 @@ else
|
|||
endif
|
||||
|
||||
CFLAGS_KASAN := -fsanitize=kernel-hwaddress \
|
||||
$(call cc-param,hwasan-instrument-stack=$(CONFIG_KASAN_STACK)) \
|
||||
$(call cc-param,hwasan-instrument-stack=$(stack_enable)) \
|
||||
$(call cc-param,hwasan-use-short-granules=0) \
|
||||
$(instrumentation_flags)
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ choice
|
|||
config GCC_PLUGIN_STRUCTLEAK_BYREF
|
||||
bool "zero-init structs passed by reference (strong)"
|
||||
depends on GCC_PLUGINS
|
||||
depends on !(KASAN && KASAN_STACK=1)
|
||||
depends on !(KASAN && KASAN_STACK)
|
||||
select GCC_PLUGIN_STRUCTLEAK
|
||||
help
|
||||
Zero-initialize any structures on the stack that may
|
||||
|
@ -82,7 +82,7 @@ choice
|
|||
config GCC_PLUGIN_STRUCTLEAK_BYREF_ALL
|
||||
bool "zero-init anything passed by reference (very strong)"
|
||||
depends on GCC_PLUGINS
|
||||
depends on !(KASAN && KASAN_STACK=1)
|
||||
depends on !(KASAN && KASAN_STACK)
|
||||
select GCC_PLUGIN_STRUCTLEAK
|
||||
help
|
||||
Zero-initialize any stack variables that may be passed
|
||||
|
|
Загрузка…
Ссылка в новой задаче