Merge tag 'iommu-fixes-v5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / lib / Kconfig.ubsan
index 0e04fcb..48469c9 100644 (file)
@@ -2,18 +2,50 @@
 config ARCH_HAS_UBSAN_SANITIZE_ALL
        bool
 
-config UBSAN
+menuconfig UBSAN
        bool "Undefined behaviour sanity checker"
        help
-         This option enables undefined behaviour sanity checker
+         This option enables the Undefined Behaviour sanity checker.
          Compile-time instrumentation is used to detect various undefined
-         behaviours in runtime. Various types of checks may be enabled
-         via boot parameter ubsan_handle
-         (see: Documentation/dev-tools/ubsan.rst).
+         behaviours at runtime. For more details, see:
+         Documentation/dev-tools/ubsan.rst
+
+if UBSAN
+
+config UBSAN_TRAP
+       bool "On Sanitizer warnings, abort the running kernel code"
+       depends on $(cc-option, -fsanitize-undefined-trap-on-error)
+       help
+         Building kernels with Sanitizer features enabled tends to grow
+         the kernel size by around 5%, due to adding all the debugging
+         text on failure paths. To avoid this, Sanitizer instrumentation
+         can just issue a trap. This reduces the kernel size overhead but
+         turns all warnings (including potentially harmless conditions)
+         into full exceptions that abort the running kernel code
+         (regardless of context, locks held, etc), which may destabilize
+         the system. For some system builders this is an acceptable
+         trade-off.
+
+config UBSAN_BOUNDS
+       bool "Perform array index bounds checking"
+       default UBSAN
+       help
+         This option enables detection of directly indexed out of bounds
+         array accesses, where the array size is known at compile time.
+         Note that this does not protect array overflows via bad calls
+         to the {str,mem}*cpy() family of functions (that is addressed
+         by CONFIG_FORTIFY_SOURCE).
+
+config UBSAN_MISC
+       bool "Enable all other Undefined Behavior sanity checks"
+       default UBSAN
+       help
+         This option enables all sanity checks that don't have their
+         own Kconfig options. Disable this if you only want to have
+         individually selected checks.
 
 config UBSAN_SANITIZE_ALL
        bool "Enable instrumentation for the entire kernel"
-       depends on UBSAN
        depends on ARCH_HAS_UBSAN_SANITIZE_ALL
 
        # We build with -Wno-maybe-uninitilzed, but we still want to
@@ -30,7 +62,6 @@ config UBSAN_SANITIZE_ALL
 
 config UBSAN_NO_ALIGNMENT
        bool "Disable checking of pointers alignment"
-       depends on UBSAN
        default y if HAVE_EFFICIENT_UNALIGNED_ACCESS
        help
          This option disables the check of unaligned memory accesses.
@@ -43,7 +74,9 @@ config UBSAN_ALIGNMENT
 
 config TEST_UBSAN
        tristate "Module for testing for undefined behavior detection"
-       depends on m && UBSAN
+       depends on m
        help
          This is a test module for UBSAN.
          It triggers various undefined behavior, and detect it.
+
+endif  # if UBSAN