Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ubsan: Remove CONFIG_UBSAN_SANITIZE_ALL

For simplicity in splitting out UBSan options into separate rules,
remove CONFIG_UBSAN_SANITIZE_ALL, effectively defaulting to "y", which
is how it is generally used anyway. (There are no ":= y" cases beyond
where a specific file is enabled when a top-level ":= n" is in effect.)

Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Marco Elver <elver@google.com>
Cc: linux-doc@vger.kernel.org
Cc: linux-kbuild@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>

+18 -41
+8 -20
Documentation/dev-tools/ubsan.rst
··· 49 49 Usage 50 50 ----- 51 51 52 - To enable UBSAN configure kernel with:: 52 + To enable UBSAN, configure the kernel with:: 53 53 54 - CONFIG_UBSAN=y 54 + CONFIG_UBSAN=y 55 55 56 - and to check the entire kernel:: 57 - 58 - CONFIG_UBSAN_SANITIZE_ALL=y 59 - 60 - To enable instrumentation for specific files or directories, add a line 61 - similar to the following to the respective kernel Makefile: 62 - 63 - - For a single file (e.g. main.o):: 64 - 65 - UBSAN_SANITIZE_main.o := y 66 - 67 - - For all files in one directory:: 68 - 69 - UBSAN_SANITIZE := y 70 - 71 - To exclude files from being instrumented even if 72 - ``CONFIG_UBSAN_SANITIZE_ALL=y``, use:: 56 + To exclude files from being instrumented use:: 73 57 74 58 UBSAN_SANITIZE_main.o := n 75 59 76 - and:: 60 + and to exclude all targets in one directory use:: 77 61 78 62 UBSAN_SANITIZE := n 63 + 64 + When disabled for all targets, specific files can be enabled using:: 65 + 66 + UBSAN_SANITIZE_main.o := y 79 67 80 68 Detection of unaligned accesses controlled through the separate option - 81 69 CONFIG_UBSAN_ALIGNMENT. It's off by default on architectures that support
+1 -1
arch/arm/Kconfig
··· 29 29 select ARCH_HAVE_NMI_SAFE_CMPXCHG if CPU_V7 || CPU_V7M || CPU_V6K 30 30 select ARCH_HAS_GCOV_PROFILE_ALL 31 31 select ARCH_KEEP_MEMBLOCK 32 - select ARCH_HAS_UBSAN_SANITIZE_ALL 32 + select ARCH_HAS_UBSAN 33 33 select ARCH_MIGHT_HAVE_PC_PARPORT 34 34 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX 35 35 select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT if CPU_V7
+1 -1
arch/arm64/Kconfig
··· 107 107 select ARCH_WANT_LD_ORPHAN_WARN 108 108 select ARCH_WANTS_NO_INSTR 109 109 select ARCH_WANTS_THP_SWAP if ARM64_4K_PAGES 110 - select ARCH_HAS_UBSAN_SANITIZE_ALL 110 + select ARCH_HAS_UBSAN 111 111 select ARM_AMBA 112 112 select ARM_ARCH_TIMER 113 113 select ARM_GIC
+1 -1
arch/mips/Kconfig
··· 14 14 select ARCH_HAS_STRNCPY_FROM_USER 15 15 select ARCH_HAS_STRNLEN_USER 16 16 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 17 - select ARCH_HAS_UBSAN_SANITIZE_ALL 17 + select ARCH_HAS_UBSAN 18 18 select ARCH_HAS_GCOV_PROFILE_ALL 19 19 select ARCH_KEEP_MEMBLOCK 20 20 select ARCH_USE_BUILTIN_BSWAP
+1 -1
arch/parisc/Kconfig
··· 12 12 select ARCH_HAS_ELF_RANDOMIZE 13 13 select ARCH_HAS_STRICT_KERNEL_RWX 14 14 select ARCH_HAS_STRICT_MODULE_RWX 15 - select ARCH_HAS_UBSAN_SANITIZE_ALL 15 + select ARCH_HAS_UBSAN 16 16 select ARCH_HAS_PTE_SPECIAL 17 17 select ARCH_NO_SG_CHAIN 18 18 select ARCH_SUPPORTS_HUGETLBFS if PA20
+1 -1
arch/powerpc/Kconfig
··· 154 154 select ARCH_HAS_SYSCALL_WRAPPER if !SPU_BASE && !COMPAT 155 155 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 156 156 select ARCH_HAS_UACCESS_FLUSHCACHE 157 - select ARCH_HAS_UBSAN_SANITIZE_ALL 157 + select ARCH_HAS_UBSAN 158 158 select ARCH_HAVE_NMI_SAFE_CMPXCHG 159 159 select ARCH_KEEP_MEMBLOCK 160 160 select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE if PPC_RADIX_MMU
+1 -1
arch/riscv/Kconfig
··· 37 37 select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL 38 38 select ARCH_HAS_SYSCALL_WRAPPER 39 39 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 40 - select ARCH_HAS_UBSAN_SANITIZE_ALL 40 + select ARCH_HAS_UBSAN 41 41 select ARCH_HAS_VDSO_DATA 42 42 select ARCH_KEEP_MEMBLOCK if ACPI 43 43 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
+1 -1
arch/s390/Kconfig
··· 82 82 select ARCH_HAS_STRICT_KERNEL_RWX 83 83 select ARCH_HAS_STRICT_MODULE_RWX 84 84 select ARCH_HAS_SYSCALL_WRAPPER 85 - select ARCH_HAS_UBSAN_SANITIZE_ALL 85 + select ARCH_HAS_UBSAN 86 86 select ARCH_HAS_VDSO_DATA 87 87 select ARCH_HAVE_NMI_SAFE_CMPXCHG 88 88 select ARCH_INLINE_READ_LOCK
+1 -1
arch/x86/Kconfig
··· 100 100 select ARCH_HAS_STRICT_MODULE_RWX 101 101 select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE 102 102 select ARCH_HAS_SYSCALL_WRAPPER 103 - select ARCH_HAS_UBSAN_SANITIZE_ALL 103 + select ARCH_HAS_UBSAN 104 104 select ARCH_HAS_DEBUG_WX 105 105 select ARCH_HAS_ZONE_DMA_SET if EXPERT 106 106 select ARCH_HAVE_NMI_SAFE_CMPXCHG
+1 -12
lib/Kconfig.ubsan
··· 1 1 # SPDX-License-Identifier: GPL-2.0-only 2 - config ARCH_HAS_UBSAN_SANITIZE_ALL 2 + config ARCH_HAS_UBSAN 3 3 bool 4 4 5 5 menuconfig UBSAN ··· 141 141 This option enables the check of unaligned memory accesses. 142 142 Enabling this option on architectures that support unaligned 143 143 accesses may produce a lot of false positives. 144 - 145 - config UBSAN_SANITIZE_ALL 146 - bool "Enable instrumentation for the entire kernel" 147 - depends on ARCH_HAS_UBSAN_SANITIZE_ALL 148 - default y 149 - help 150 - This option activates instrumentation for the entire kernel. 151 - If you don't enable this option, you have to explicitly specify 152 - UBSAN_SANITIZE := y for the files/directories you want to check for UB. 153 - Enabling this option will get kernel image size increased 154 - significantly. 155 144 156 145 config TEST_UBSAN 157 146 tristate "Module for testing for undefined behavior detection"
+1 -1
scripts/Makefile.lib
··· 175 175 176 176 ifeq ($(CONFIG_UBSAN),y) 177 177 _c_flags += $(if $(patsubst n%,, \ 178 - $(UBSAN_SANITIZE_$(basetarget).o)$(UBSAN_SANITIZE)$(CONFIG_UBSAN_SANITIZE_ALL)), \ 178 + $(UBSAN_SANITIZE_$(basetarget).o)$(UBSAN_SANITIZE)y), \ 179 179 $(CFLAGS_UBSAN)) 180 180 endif 181 181