Some architectures use a hardware defined structure at address zero. Checking for a null pointer will result in many ubsan reports. Allow users to disable the null sanitizer.
Unified · Split
| @@ -1,6 +1,9 @@ | ||
| 1 | 1 | config ARCH_HAS_UBSAN_SANITIZE_ALL |
| 2 | 2 | bool |
| 3 | 3 | |
| 4 | +config ARCH_WANTS_UBSAN_NO_NULL | |
| 5 | + def_bool n | |
| 6 | + | |
| 4 | 7 | config UBSAN |
| 5 | 8 | bool "Undefined behaviour sanity checker" |
| 6 | 9 | help |
| @@ -34,3 +37,11 @@ config UBSAN_ALIGNMENT · 27 unmodified lines | ||
| 34 | 37 | This option enables detection of unaligned memory accesses. |
| 35 | 38 | Enabling this option on architectures that support unaligned |
| 36 | 39 | accesses may produce a lot of false positives. |
| 40 | + | |
| 41 | +config UBSAN_NULL | |
| 42 | + bool "Enable checking of null pointers" | |
| 43 | + depends on UBSAN | |
| 44 | + default y if !ARCH_WANTS_UBSAN_NO_NULL | |
| 45 | + help | |
| 46 | + This option enables detection of memory accesses via a | |
| 47 | + null pointer. | |
| @@ -3,7 +3,6 @@ ifdef CONFIG_UBSAN · 2 unmodified lines | ||
| 3 | 3 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=integer-divide-by-zero) |
| 4 | 4 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=unreachable) |
| 5 | 5 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=vla-bound) |
| 6 | − CFLAGS_UBSAN += $(call cc-option, -fsanitize=null) | |
| 7 | 6 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=signed-integer-overflow) |
| 8 | 7 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=bounds) |
| 9 | 8 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=object-size) |
| @@ -14,4 +13,8 @@ ifdef CONFIG_UBSAN · 4 unmodified lines | ||
| 14 | 13 | ifdef CONFIG_UBSAN_ALIGNMENT |
| 15 | 14 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment) |
| 16 | 15 | endif |
| 16 | + | |
| 17 | +ifdef CONFIG_UBSAN_NULL | |
| 18 | + CFLAGS_UBSAN += $(call cc-option, -fsanitize=null) | |
| 19 | +endif | |
| 17 | 20 | endif |