History

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.)

Kees Cook committed 2 years ago

Commit 918327e1 parent 30edbdf11 files · +18 −41Browse files

Unified · Split

11 files
  1. Documentation/dev-tools/ubsan.rst +8 −20
  2. arch/arm/Kconfig +1 −1
  3. arch/arm64/Kconfig +1 −1
  4. arch/mips/Kconfig +1 −1
  5. arch/parisc/Kconfig +1 −1
  6. arch/powerpc/Kconfig +1 −1
  7. arch/riscv/Kconfig +1 −1
  8. arch/s390/Kconfig +1 −1
  9. arch/x86/Kconfig +1 −1
  10. lib/Kconfig.ubsan +1 −12
  11. scripts/Makefile.lib +1 −1
Documentation/dev-tools/ubsan.rst+8−20
@@ -49,34 +49,22 @@ Report example · 48 unmodified lines
49Usage49Usage
50-----50-----
51 51
52To enable UBSAN configure kernel with::52To enable UBSAN, configure the kernel with::
53 53
54 CONFIG_UBSAN=y54 CONFIG_UBSAN=y
55 55
56and to check the entire kernel::56To exclude files from being instrumented use::
57
58 CONFIG_UBSAN_SANITIZE_ALL=y
59
60To enable instrumentation for specific files or directories, add a line
61similar 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
71To exclude files from being instrumented even if
72``CONFIG_UBSAN_SANITIZE_ALL=y``, use::
73 57
74 UBSAN_SANITIZE_main.o := n58 UBSAN_SANITIZE_main.o := n
75 59
76and::60and to exclude all targets in one directory use::
77 61
78 UBSAN_SANITIZE := n62 UBSAN_SANITIZE := n
79 63
64When disabled for all targets, specific files can be enabled using::
65
66 UBSAN_SANITIZE_main.o := y
67
80Detection of unaligned accesses controlled through the separate option -68Detection of unaligned accesses controlled through the separate option -
81CONFIG_UBSAN_ALIGNMENT. It's off by default on architectures that support69CONFIG_UBSAN_ALIGNMENT. It's off by default on architectures that support
82unaligned accesses (CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y). One could70unaligned accesses (CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y). One could
arch/arm/Kconfig+1−1
@@ -29,7 +29,7 @@ config ARM · 28 unmodified lines
29 select ARCH_HAVE_NMI_SAFE_CMPXCHG if CPU_V7 || CPU_V7M || CPU_V6K29 select ARCH_HAVE_NMI_SAFE_CMPXCHG if CPU_V7 || CPU_V7M || CPU_V6K
30 select ARCH_HAS_GCOV_PROFILE_ALL30 select ARCH_HAS_GCOV_PROFILE_ALL
31 select ARCH_KEEP_MEMBLOCK31 select ARCH_KEEP_MEMBLOCK
32 select ARCH_HAS_UBSAN_SANITIZE_ALL32 select ARCH_HAS_UBSAN
33 select ARCH_MIGHT_HAVE_PC_PARPORT33 select ARCH_MIGHT_HAVE_PC_PARPORT
34 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX34 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
35 select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT if CPU_V735 select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT if CPU_V7
arch/arm64/Kconfig+1−1
@@ -107,7 +107,7 @@ config ARM64 · 106 unmodified lines
107 select ARCH_WANT_LD_ORPHAN_WARN107 select ARCH_WANT_LD_ORPHAN_WARN
108 select ARCH_WANTS_NO_INSTR108 select ARCH_WANTS_NO_INSTR
109 select ARCH_WANTS_THP_SWAP if ARM64_4K_PAGES109 select ARCH_WANTS_THP_SWAP if ARM64_4K_PAGES
110 select ARCH_HAS_UBSAN_SANITIZE_ALL110 select ARCH_HAS_UBSAN
111 select ARM_AMBA111 select ARM_AMBA
112 select ARM_ARCH_TIMER112 select ARM_ARCH_TIMER
113 select ARM_GIC113 select ARM_GIC
arch/mips/Kconfig+1−1
@@ -14,7 +14,7 @@ config MIPS · 13 unmodified lines
14 select ARCH_HAS_STRNCPY_FROM_USER14 select ARCH_HAS_STRNCPY_FROM_USER
15 select ARCH_HAS_STRNLEN_USER15 select ARCH_HAS_STRNLEN_USER
16 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST16 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
17 select ARCH_HAS_UBSAN_SANITIZE_ALL17 select ARCH_HAS_UBSAN
18 select ARCH_HAS_GCOV_PROFILE_ALL18 select ARCH_HAS_GCOV_PROFILE_ALL
19 select ARCH_KEEP_MEMBLOCK19 select ARCH_KEEP_MEMBLOCK
20 select ARCH_USE_BUILTIN_BSWAP20 select ARCH_USE_BUILTIN_BSWAP
arch/parisc/Kconfig+1−1
@@ -12,7 +12,7 @@ config PARISC · 11 unmodified lines
12 select ARCH_HAS_ELF_RANDOMIZE12 select ARCH_HAS_ELF_RANDOMIZE
13 select ARCH_HAS_STRICT_KERNEL_RWX13 select ARCH_HAS_STRICT_KERNEL_RWX
14 select ARCH_HAS_STRICT_MODULE_RWX14 select ARCH_HAS_STRICT_MODULE_RWX
15 select ARCH_HAS_UBSAN_SANITIZE_ALL15 select ARCH_HAS_UBSAN
16 select ARCH_HAS_PTE_SPECIAL16 select ARCH_HAS_PTE_SPECIAL
17 select ARCH_NO_SG_CHAIN17 select ARCH_NO_SG_CHAIN
18 select ARCH_SUPPORTS_HUGETLBFS if PA2018 select ARCH_SUPPORTS_HUGETLBFS if PA20
arch/powerpc/Kconfig+1−1
@@ -154,7 +154,7 @@ config PPC · 153 unmodified lines
154 select ARCH_HAS_SYSCALL_WRAPPER if !SPU_BASE && !COMPAT154 select ARCH_HAS_SYSCALL_WRAPPER if !SPU_BASE && !COMPAT
155 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST155 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
156 select ARCH_HAS_UACCESS_FLUSHCACHE156 select ARCH_HAS_UACCESS_FLUSHCACHE
157 select ARCH_HAS_UBSAN_SANITIZE_ALL157 select ARCH_HAS_UBSAN
158 select ARCH_HAVE_NMI_SAFE_CMPXCHG158 select ARCH_HAVE_NMI_SAFE_CMPXCHG
159 select ARCH_KEEP_MEMBLOCK159 select ARCH_KEEP_MEMBLOCK
160 select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE if PPC_RADIX_MMU160 select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE if PPC_RADIX_MMU
arch/riscv/Kconfig+1−1
@@ -37,7 +37,7 @@ config RISCV · 36 unmodified lines
37 select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL37 select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL
38 select ARCH_HAS_SYSCALL_WRAPPER38 select ARCH_HAS_SYSCALL_WRAPPER
39 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST39 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
40 select ARCH_HAS_UBSAN_SANITIZE_ALL40 select ARCH_HAS_UBSAN
41 select ARCH_HAS_VDSO_DATA41 select ARCH_HAS_VDSO_DATA
42 select ARCH_KEEP_MEMBLOCK if ACPI42 select ARCH_KEEP_MEMBLOCK if ACPI
43 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX43 select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
arch/s390/Kconfig+1−1
@@ -82,7 +82,7 @@ config S390 · 81 unmodified lines
82 select ARCH_HAS_STRICT_KERNEL_RWX82 select ARCH_HAS_STRICT_KERNEL_RWX
83 select ARCH_HAS_STRICT_MODULE_RWX83 select ARCH_HAS_STRICT_MODULE_RWX
84 select ARCH_HAS_SYSCALL_WRAPPER84 select ARCH_HAS_SYSCALL_WRAPPER
85 select ARCH_HAS_UBSAN_SANITIZE_ALL85 select ARCH_HAS_UBSAN
86 select ARCH_HAS_VDSO_DATA86 select ARCH_HAS_VDSO_DATA
87 select ARCH_HAVE_NMI_SAFE_CMPXCHG87 select ARCH_HAVE_NMI_SAFE_CMPXCHG
88 select ARCH_INLINE_READ_LOCK88 select ARCH_INLINE_READ_LOCK
arch/x86/Kconfig+1−1
@@ -100,7 +100,7 @@ config X86 · 99 unmodified lines
100 select ARCH_HAS_STRICT_MODULE_RWX100 select ARCH_HAS_STRICT_MODULE_RWX
101 select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE101 select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
102 select ARCH_HAS_SYSCALL_WRAPPER102 select ARCH_HAS_SYSCALL_WRAPPER
103 select ARCH_HAS_UBSAN_SANITIZE_ALL103 select ARCH_HAS_UBSAN
104 select ARCH_HAS_DEBUG_WX104 select ARCH_HAS_DEBUG_WX
105 select ARCH_HAS_ZONE_DMA_SET if EXPERT105 select ARCH_HAS_ZONE_DMA_SET if EXPERT
106 select ARCH_HAVE_NMI_SAFE_CMPXCHG106 select ARCH_HAVE_NMI_SAFE_CMPXCHG
lib/Kconfig.ubsan+1−12
@@ -1,5 +1,5 @@
1# SPDX-License-Identifier: GPL-2.0-only1# SPDX-License-Identifier: GPL-2.0-only
2config ARCH_HAS_UBSAN_SANITIZE_ALL2config ARCH_HAS_UBSAN
3 bool3 bool
4 4
5menuconfig UBSAN5menuconfig UBSAN
@@ -142,17 +142,6 @@ config UBSAN_ALIGNMENT · 136 unmodified lines
142 Enabling this option on architectures that support unaligned142 Enabling this option on architectures that support unaligned
143 accesses may produce a lot of false positives.143 accesses may produce a lot of false positives.
144 144
145config 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
156config TEST_UBSAN145config TEST_UBSAN
157 tristate "Module for testing for undefined behavior detection"146 tristate "Module for testing for undefined behavior detection"
158 depends on m147 depends on m
scripts/Makefile.lib+1−1
@@ -175,7 +175,7 @@ endif · 174 unmodified lines
175 175
176ifeq ($(CONFIG_UBSAN),y)176ifeq ($(CONFIG_UBSAN),y)
177_c_flags += $(if $(patsubst n%,, \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 $(CFLAGS_UBSAN))179 $(CFLAGS_UBSAN))
180endif180endif
181 181

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t