summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Kconfig.kasan18
-rw-r--r--scripts/Makefile.lib2
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/Kconfig.kasan b/lib/Kconfig.kasan
index 0fee5acd5aa0..e6ba5447672f 100644
--- a/lib/Kconfig.kasan
+++ b/lib/Kconfig.kasan
@@ -16,6 +16,8 @@ config KASAN
This feature consumes about 1/8 of available memory and brings about
~x3 performance slowdown.
For better error detection enable CONFIG_STACKTRACE.
+ See KASAN_SANITIZE_ALL for selectively compiling files and directories
+ with this compiler feature enabled.
choice
prompt "Instrumentation type"
@@ -42,6 +44,22 @@ config KASAN_INLINE
endchoice
+config KASAN_SANITIZE_ALL
+ bool "KASan: Enable Instrumentation for entire kernel"
+ depends on KASAN
+ default y
+ help
+ Enable compilation with $(CFLAGS_KASAN) by default.
+ KASAN_SANITIZE := n - exclude all files in a directory
+ KASAN_SANITIZE_file_name.o := n - exclude a single file
+ Setting KASAN_SANITIZE_ALL to 'n' allows enabling kasan in
+ only certain files or directories.
+ KASAN_SANITIZE := y - include all files in a directory
+ KASAN_SANITIZE_file_name.o := y - include single file
+
+ KASAN_SANITIZE does not affect subdirectories.
+ KASAN_SANITIZE_file_name.o has priority over KASAN_SANITIZE.
+
config TEST_KASAN
tristate "Module for testing kasan for bug detection"
depends on m && KASAN
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 550fb793a015..861a2acd8cba 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -125,7 +125,7 @@ endif
#
ifeq ($(CONFIG_KASAN),y)
_c_flags += $(if $(patsubst n%,, \
- $(KASAN_SANITIZE_$(basetarget).o)$(KASAN_SANITIZE)y), \
+ $(KASAN_SANITIZE_$(basetarget).o)$(KASAN_SANITIZE)$(CONFIG_KASAN_SANITIZE_ALL)), \
$(CFLAGS_KASAN))
endif