1# SPDX-License-Identifier: GPL-2.0-only 2config HAVE_ARCH_KMSAN 3 bool 4 5config HAVE_KMSAN_COMPILER 6 # Clang versions <14.0.0 also support -fsanitize=kernel-memory, but not 7 # all the features necessary to build the kernel with KMSAN. 8 depends on CC_IS_CLANG && CLANG_VERSION >= 140000 9 def_bool $(cc-option,-fsanitize=kernel-memory -mllvm -msan-disable-checks=1) 10 11config KMSAN 12 bool "KMSAN: detector of uninitialized values use" 13 depends on HAVE_ARCH_KMSAN && HAVE_KMSAN_COMPILER 14 depends on SLUB && DEBUG_KERNEL && !KASAN && !KCSAN 15 select STACKDEPOT 16 select STACKDEPOT_ALWAYS_INIT 17 help 18 KernelMemorySanitizer (KMSAN) is a dynamic detector of uses of 19 uninitialized values in the kernel. It is based on compiler 20 instrumentation provided by Clang and thus requires Clang to build. 21 22 An important note is that KMSAN is not intended for production use, 23 because it drastically increases kernel memory footprint and slows 24 the whole system down. 25 26 See <file:Documentation/dev-tools/kmsan.rst> for more details. 27 28if KMSAN 29 30config HAVE_KMSAN_PARAM_RETVAL 31 # -fsanitize-memory-param-retval is supported only by Clang >= 14. 32 depends on HAVE_KMSAN_COMPILER 33 def_bool $(cc-option,-fsanitize=kernel-memory -fsanitize-memory-param-retval) 34 35config KMSAN_CHECK_PARAM_RETVAL 36 bool "Check for uninitialized values passed to and returned from functions" 37 default y 38 depends on HAVE_KMSAN_PARAM_RETVAL 39 help 40 If the compiler supports -fsanitize-memory-param-retval, KMSAN will 41 eagerly check every function parameter passed by value and every 42 function return value. 43 44 Disabling KMSAN_CHECK_PARAM_RETVAL will result in tracking shadow for 45 function parameters and return values across function borders. This 46 is a more relaxed mode, but it generates more instrumentation code and 47 may potentially report errors in corner cases when non-instrumented 48 functions call instrumented ones. 49 50config KMSAN_KUNIT_TEST 51 tristate "KMSAN integration test suite" if !KUNIT_ALL_TESTS 52 default KUNIT_ALL_TESTS 53 depends on TRACEPOINTS && KUNIT 54 help 55 Test suite for KMSAN, testing various error detection scenarios, 56 and checking that reports are correctly output to console. 57 58 Say Y here if you want the test to be built into the kernel and run 59 during boot; say M if you want the test to build as a module; say N 60 if you are unsure. 61 62endif 63