Kconfig.kmsan 2.3 KB

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