# 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
