Commit 02c58773 authored by Walter Wu's avatar Walter Wu Committed by Linus Torvalds

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: d9b571c8 ("kasan: fix KASAN_STACK dependency for HW_TAGS")
Signed-off-by: default avatarWalter Wu <walter-zh.wu@mediatek.com>
Suggested-by: default avatarDmitry Vyukov <dvyukov@google.com>
Reviewed-by: default avatarNathan Chancellor <natechancellor@gmail.com>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Reviewed-by: default avatarAndrey 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 5c595ac4
...@@ -134,7 +134,7 @@ SYM_FUNC_START(_cpu_resume) ...@@ -134,7 +134,7 @@ SYM_FUNC_START(_cpu_resume)
*/ */
bl cpu_do_resume bl cpu_do_resume
#if defined(CONFIG_KASAN) && CONFIG_KASAN_STACK #if defined(CONFIG_KASAN) && defined(CONFIG_KASAN_STACK)
mov x0, sp mov x0, sp
bl kasan_unpoison_task_stack_below bl kasan_unpoison_task_stack_below
#endif #endif
......
...@@ -115,7 +115,7 @@ SYM_FUNC_START(do_suspend_lowlevel) ...@@ -115,7 +115,7 @@ SYM_FUNC_START(do_suspend_lowlevel)
movq pt_regs_r14(%rax), %r14 movq pt_regs_r14(%rax), %r14
movq pt_regs_r15(%rax), %r15 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, * The suspend path may have poisoned some areas deeper in the stack,
* which we now need to unpoison. * which we now need to unpoison.
......
...@@ -330,7 +330,7 @@ static inline bool kasan_check_byte(const void *address) ...@@ -330,7 +330,7 @@ static inline bool kasan_check_byte(const void *address)
#endif /* CONFIG_KASAN */ #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); void kasan_unpoison_task_stack(struct task_struct *task);
#else #else
static inline void kasan_unpoison_task_stack(struct task_struct *task) {} static inline void kasan_unpoison_task_stack(struct task_struct *task) {}
......
...@@ -138,9 +138,10 @@ config KASAN_INLINE ...@@ -138,9 +138,10 @@ config KASAN_INLINE
endchoice endchoice
config KASAN_STACK_ENABLE config KASAN_STACK
bool "Enable stack instrumentation (unsafe)" if CC_IS_CLANG && !COMPILE_TEST bool "Enable stack instrumentation (unsafe)" if CC_IS_CLANG && !COMPILE_TEST
depends on KASAN_GENERIC || KASAN_SW_TAGS depends on KASAN_GENERIC || KASAN_SW_TAGS
default y if CC_IS_GCC
help help
The LLVM stack address sanitizer has a know problem that The LLVM stack address sanitizer has a know problem that
causes excessive stack usage in a lot of functions, see causes excessive stack usage in a lot of functions, see
...@@ -154,12 +155,6 @@ config KASAN_STACK_ENABLE ...@@ -154,12 +155,6 @@ config KASAN_STACK_ENABLE
CONFIG_COMPILE_TEST. On gcc it is assumed to always be safe CONFIG_COMPILE_TEST. On gcc it is assumed to always be safe
to use and enabled by default. 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 config KASAN_SW_TAGS_IDENTIFY
bool "Enable memory corruption identification" bool "Enable memory corruption identification"
depends on KASAN_SW_TAGS depends on KASAN_SW_TAGS
......
...@@ -63,7 +63,7 @@ void __kasan_unpoison_range(const void *address, size_t size) ...@@ -63,7 +63,7 @@ void __kasan_unpoison_range(const void *address, size_t size)
kasan_unpoison(address, size); kasan_unpoison(address, size);
} }
#if CONFIG_KASAN_STACK #ifdef CONFIG_KASAN_STACK
/* Unpoison the entire stack for a task. */ /* Unpoison the entire stack for a task. */
void kasan_unpoison_task_stack(struct task_struct *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); ...@@ -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); const char *kasan_get_bug_type(struct kasan_access_info *info);
void kasan_metadata_fetch_row(char *buffer, void *row); 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); void kasan_print_address_stack_frame(const void *addr);
#else #else
static inline void kasan_print_address_stack_frame(const void *addr) { } static inline void kasan_print_address_stack_frame(const void *addr) { }
......
...@@ -128,7 +128,7 @@ void kasan_metadata_fetch_row(char *buffer, void *row) ...@@ -128,7 +128,7 @@ void kasan_metadata_fetch_row(char *buffer, void *row)
memcpy(buffer, kasan_mem_to_shadow(row), META_BYTES_PER_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, static bool __must_check tokenize_frame_descr(const char **frame_descr,
char *token, size_t max_tok_len, char *token, size_t max_tok_len,
unsigned long *value) unsigned long *value)
......
...@@ -4,6 +4,12 @@ KASAN_SHADOW_OFFSET ?= $(CONFIG_KASAN_SHADOW_OFFSET) ...@@ -4,6 +4,12 @@ KASAN_SHADOW_OFFSET ?= $(CONFIG_KASAN_SHADOW_OFFSET)
cc-param = $(call cc-option, -mllvm -$(1), $(call cc-option, --param $(1))) 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_GENERIC
ifdef CONFIG_KASAN_INLINE ifdef CONFIG_KASAN_INLINE
...@@ -27,7 +33,7 @@ else ...@@ -27,7 +33,7 @@ else
CFLAGS_KASAN := $(CFLAGS_KASAN_SHADOW) \ CFLAGS_KASAN := $(CFLAGS_KASAN_SHADOW) \
$(call cc-param,asan-globals=1) \ $(call cc-param,asan-globals=1) \
$(call cc-param,asan-instrumentation-with-call-threshold=$(call_threshold)) \ $(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) $(call cc-param,asan-instrument-allocas=1)
endif endif
...@@ -42,7 +48,7 @@ else ...@@ -42,7 +48,7 @@ else
endif endif
CFLAGS_KASAN := -fsanitize=kernel-hwaddress \ 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) \ $(call cc-param,hwasan-use-short-granules=0) \
$(instrumentation_flags) $(instrumentation_flags)
......
...@@ -64,7 +64,7 @@ choice ...@@ -64,7 +64,7 @@ choice
config GCC_PLUGIN_STRUCTLEAK_BYREF config GCC_PLUGIN_STRUCTLEAK_BYREF
bool "zero-init structs passed by reference (strong)" bool "zero-init structs passed by reference (strong)"
depends on GCC_PLUGINS depends on GCC_PLUGINS
depends on !(KASAN && KASAN_STACK=1) depends on !(KASAN && KASAN_STACK)
select GCC_PLUGIN_STRUCTLEAK select GCC_PLUGIN_STRUCTLEAK
help help
Zero-initialize any structures on the stack that may Zero-initialize any structures on the stack that may
...@@ -82,7 +82,7 @@ choice ...@@ -82,7 +82,7 @@ choice
config GCC_PLUGIN_STRUCTLEAK_BYREF_ALL config GCC_PLUGIN_STRUCTLEAK_BYREF_ALL
bool "zero-init anything passed by reference (very strong)" bool "zero-init anything passed by reference (very strong)"
depends on GCC_PLUGINS depends on GCC_PLUGINS
depends on !(KASAN && KASAN_STACK=1) depends on !(KASAN && KASAN_STACK)
select GCC_PLUGIN_STRUCTLEAK select GCC_PLUGIN_STRUCTLEAK
help help
Zero-initialize any stack variables that may be passed Zero-initialize any stack variables that may be passed
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment