BACKPORT: 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. [1]: https://bugzilla.kernel.org/show_bug.cgi?id=210221 Link: https://lkml.kernel.org/r/20210226012531.29231-1-walter-zh.wu@mediatek.com 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> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> (cherry picked from commit 3bc29a8e251a9469ce69e62118d70eaf0caa5acb https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git akpm) (cherry picked from commit 0d9e60b66271414a18a1d4f1fe2c923245f1e3a8 https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git akpm) [glider: resolved a minor merge conflict, squashed two patches together] Bug: 182930667 Signed-off-by: Alexander Potapenko <glider@google.com> Change-Id: I1b3d2cdcf45727a25d36ac7f417a4f026152d6a8
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -112,7 +112,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) {}
|
||||
|
||||
+2
-7
@@ -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_S390_4_LEVEL_PAGING
|
||||
bool "KASan: use 4-level paging"
|
||||
depends on S390
|
||||
|
||||
+1
-1
@@ -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)
|
||||
{
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
CFLAGS_KASAN_NOSANITIZE := -fno-builtin
|
||||
KASAN_SHADOW_OFFSET ?= $(CONFIG_KASAN_SHADOW_OFFSET)
|
||||
|
||||
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 \
|
||||
-mllvm -hwasan-instrument-stack=$(CONFIG_KASAN_STACK) \
|
||||
-mllvm -hwasan-instrument-stack=$(stack_enable) \
|
||||
-mllvm -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
|
||||
|
||||
Reference in New Issue
Block a user