| # SPDX-License-Identifier: GPL-2.0-only | 
 | config HAVE_ARCH_KMSAN | 
 | 	bool | 
 |  | 
 | config HAVE_KMSAN_COMPILER | 
 | 	def_bool CC_IS_CLANG | 
 |  | 
 | config KMSAN | 
 | 	bool "KMSAN: detector of uninitialized values use" | 
 | 	depends on HAVE_ARCH_KMSAN && HAVE_KMSAN_COMPILER | 
 | 	depends on DEBUG_KERNEL && !KASAN && !KCSAN | 
 | 	depends on !PREEMPT_RT | 
 | 	select STACKDEPOT | 
 | 	select STACKDEPOT_ALWAYS_INIT | 
 | 	help | 
 | 	  KernelMemorySanitizer (KMSAN) is a dynamic detector of uses of | 
 | 	  uninitialized values in the kernel. It is based on compiler | 
 | 	  instrumentation provided by Clang and thus requires Clang to build. | 
 |  | 
 | 	  An important note is that KMSAN is not intended for production use, | 
 | 	  because it drastically increases kernel memory footprint and slows | 
 | 	  the whole system down. | 
 |  | 
 | 	  See <file:Documentation/dev-tools/kmsan.rst> for more details. | 
 |  | 
 | if KMSAN | 
 |  | 
 | config KMSAN_CHECK_PARAM_RETVAL | 
 | 	bool "Check for uninitialized values passed to and returned from functions" | 
 | 	default y | 
 | 	help | 
 | 	  If the compiler supports -fsanitize-memory-param-retval, KMSAN will | 
 | 	  eagerly check every function parameter passed by value and every | 
 | 	  function return value. | 
 |  | 
 | 	  Disabling KMSAN_CHECK_PARAM_RETVAL will result in tracking shadow for | 
 | 	  function parameters and return values across function borders. This | 
 | 	  is a more relaxed mode, but it generates more instrumentation code and | 
 | 	  may potentially report errors in corner cases when non-instrumented | 
 | 	  functions call instrumented ones. | 
 |  | 
 | config KMSAN_KUNIT_TEST | 
 | 	tristate "KMSAN integration test suite" if !KUNIT_ALL_TESTS | 
 | 	default KUNIT_ALL_TESTS | 
 | 	depends on TRACEPOINTS && KUNIT | 
 | 	help | 
 | 	  Test suite for KMSAN, testing various error detection scenarios, | 
 | 	  and checking that reports are correctly output to console. | 
 |  | 
 | 	  Say Y here if you want the test to be built into the kernel and run | 
 | 	  during boot; say M if you want the test to build as a module; say N | 
 | 	  if you are unsure. | 
 |  | 
 | endif |