Fow low memory device, full enabled kasan just not work. Set KASAN_SANITIZE to n when CONFIG_KASAN_WHITELIST_ONLY=y. So we can enable kasan for single file or module. Signed-off-by: Joey Jiao <quic_jiangenj@xxxxxxxxxxx> --- lib/Kconfig.kasan | 8 ++++++++ scripts/Makefile.lib | 3 +++ 2 files changed, 11 insertions(+) diff --git a/lib/Kconfig.kasan b/lib/Kconfig.kasan index fdca89c05745..1cec4e204831 100644 --- a/lib/Kconfig.kasan +++ b/lib/Kconfig.kasan @@ -153,6 +153,14 @@ config KASAN_INLINE endchoice +config KASAN_WHITELIST_ONLY + bool "Whitelist only KASAN" + depends on KASAN && !KASAN_HW_TAGS + default n + help + Say Y here to only enable KASAN for module or files which has explicitly + set KASAN_SANITIZE:=y which is helpful especially for memory limited devices. + config KASAN_STACK bool "Stack instrumentation (unsafe)" if CC_IS_CLANG && !COMPILE_TEST depends on KASAN_GENERIC || KASAN_SW_TAGS diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 68d0134bdbf9..e8d608ea369c 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -158,6 +158,9 @@ endif # ifeq ($(CONFIG_KASAN),y) ifneq ($(CONFIG_KASAN_HW_TAGS),y) +ifeq ($(CONFIG_KASAN_WHITELIST_ONLY),y) +KASAN_SANITIZE ?= n +endif _c_flags += $(if $(patsubst n%,, \ $(KASAN_SANITIZE_$(basetarget).o)$(KASAN_SANITIZE)y), \ $(CFLAGS_KASAN), $(CFLAGS_KASAN_NOSANITIZE)) -- 2.38.1