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 | config ARCH_HAS_UBSAN_SANITIZE_ALL | 1 | config ARCH_HAS_UBSAN_SANITIZE_ALL |
| 2 | bool | 2 | bool |
| 3 | 3 | ||
| 4 | config ARCH_WANTS_UBSAN_NO_NULL | ||
| 5 | def_bool n | ||
| 6 | |||
| 4 | config UBSAN | 7 | config UBSAN |
| 5 | bool "Undefined behaviour sanity checker" | 8 | bool "Undefined behaviour sanity checker" |
| 6 | help | 9 | help |
| @@ -34,3 +37,11 @@ config UBSAN_ALIGNMENT · 27 unmodified lines | |||
| 34 | This option enables detection of unaligned memory accesses. | 37 | This option enables detection of unaligned memory accesses. |
| 35 | Enabling this option on architectures that support unaligned | 38 | Enabling this option on architectures that support unaligned |
| 36 | accesses may produce a lot of false positives. | 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 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=integer-divide-by-zero) | 3 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=integer-divide-by-zero) |
| 4 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=unreachable) | 4 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=unreachable) |
| 5 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=vla-bound) | 5 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=vla-bound) |
| 6 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=null) | ||
| 7 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=signed-integer-overflow) | 6 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=signed-integer-overflow) |
| 8 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=bounds) | 7 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=bounds) |
| 9 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=object-size) | 8 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=object-size) |
| @@ -14,4 +13,8 @@ ifdef CONFIG_UBSAN · 4 unmodified lines | |||
| 14 | ifdef CONFIG_UBSAN_ALIGNMENT | 13 | ifdef CONFIG_UBSAN_ALIGNMENT |
| 15 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment) | 14 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment) |
| 16 | endif | 15 | endif |
| 16 | |||
| 17 | ifdef CONFIG_UBSAN_NULL | ||
| 18 | CFLAGS_UBSAN += $(call cc-option, -fsanitize=null) | ||
| 19 | endif | ||
| 17 | endif | 20 | endif |