RISC-V: Fix a race condition during kernel stack overflow
[platform/kernel/linux-starfive.git] / lib / Kconfig.kmsan
1 # SPDX-License-Identifier: GPL-2.0-only
2 config HAVE_ARCH_KMSAN
3         bool
4
5 config 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
11 config 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
28 if KMSAN
29
30 config 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
35 config 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
50 config 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
62 endif