lib/ubsan: remove null-pointer checks
With gcc-8 fsanitize=null become very noisy. GCC started to complain about things like &a->b, where 'a' is NULL pointer. There is no NULL dereference, we just calculate address to struct member. It's technically undefined behavior so UBSAN is correct to report it. But as long as there is no real NULL-dereference, I think, we should be fine. -fno-delete-null-pointer-checks compiler flag should protect us from any consequences. So let's just no use -fsanitize=null as it's not useful for us. If there is a real NULL-deref we will see crash. Even if userspace mapped something at NULL (root can do this), with things like SMAP should catch the issue. Link: http://lkml.kernel.org/r/20180802153209.813-1-aryabinin@virtuozzo.com Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5832fcf999
commit
3ca17b1f36
4 changed files with 0 additions and 17 deletions
|
@ -11,7 +11,6 @@ config PARISC
|
||||||
select ARCH_HAS_ELF_RANDOMIZE
|
select ARCH_HAS_ELF_RANDOMIZE
|
||||||
select ARCH_HAS_STRICT_KERNEL_RWX
|
select ARCH_HAS_STRICT_KERNEL_RWX
|
||||||
select ARCH_HAS_UBSAN_SANITIZE_ALL
|
select ARCH_HAS_UBSAN_SANITIZE_ALL
|
||||||
select ARCH_WANTS_UBSAN_NO_NULL
|
|
||||||
select ARCH_SUPPORTS_MEMORY_FAILURE
|
select ARCH_SUPPORTS_MEMORY_FAILURE
|
||||||
select RTC_CLASS
|
select RTC_CLASS
|
||||||
select RTC_DRV_GENERIC
|
select RTC_DRV_GENERIC
|
||||||
|
|
|
@ -106,7 +106,6 @@ config S390
|
||||||
select ARCH_USE_BUILTIN_BSWAP
|
select ARCH_USE_BUILTIN_BSWAP
|
||||||
select ARCH_USE_CMPXCHG_LOCKREF
|
select ARCH_USE_CMPXCHG_LOCKREF
|
||||||
select ARCH_WANTS_DYNAMIC_TASK_STRUCT
|
select ARCH_WANTS_DYNAMIC_TASK_STRUCT
|
||||||
select ARCH_WANTS_UBSAN_NO_NULL
|
|
||||||
select ARCH_WANT_IPC_PARSE_VERSION
|
select ARCH_WANT_IPC_PARSE_VERSION
|
||||||
select BUILDTIME_EXTABLE_SORT
|
select BUILDTIME_EXTABLE_SORT
|
||||||
select CLONE_BACKWARDS2
|
select CLONE_BACKWARDS2
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
config ARCH_HAS_UBSAN_SANITIZE_ALL
|
config ARCH_HAS_UBSAN_SANITIZE_ALL
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config ARCH_WANTS_UBSAN_NO_NULL
|
|
||||||
def_bool n
|
|
||||||
|
|
||||||
config UBSAN
|
config UBSAN
|
||||||
bool "Undefined behaviour sanity checker"
|
bool "Undefined behaviour sanity checker"
|
||||||
help
|
help
|
||||||
|
@ -39,14 +36,6 @@ config UBSAN_ALIGNMENT
|
||||||
Enabling this option on architectures that support unaligned
|
Enabling this option on architectures that support unaligned
|
||||||
accesses may produce a lot of false positives.
|
accesses may produce a lot of false positives.
|
||||||
|
|
||||||
config UBSAN_NULL
|
|
||||||
bool "Enable checking of null pointers"
|
|
||||||
depends on UBSAN
|
|
||||||
default y if !ARCH_WANTS_UBSAN_NO_NULL
|
|
||||||
help
|
|
||||||
This option enables detection of memory accesses via a
|
|
||||||
null pointer.
|
|
||||||
|
|
||||||
config TEST_UBSAN
|
config TEST_UBSAN
|
||||||
tristate "Module for testing for undefined behavior detection"
|
tristate "Module for testing for undefined behavior detection"
|
||||||
depends on m && UBSAN
|
depends on m && UBSAN
|
||||||
|
|
|
@ -14,10 +14,6 @@ ifdef CONFIG_UBSAN_ALIGNMENT
|
||||||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment)
|
CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_UBSAN_NULL
|
|
||||||
CFLAGS_UBSAN += $(call cc-option, -fsanitize=null)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# -fsanitize=* options makes GCC less smart than usual and
|
# -fsanitize=* options makes GCC less smart than usual and
|
||||||
# increase number of 'maybe-uninitialized false-positives
|
# increase number of 'maybe-uninitialized false-positives
|
||||||
CFLAGS_UBSAN += $(call cc-option, -Wno-maybe-uninitialized)
|
CFLAGS_UBSAN += $(call cc-option, -Wno-maybe-uninitialized)
|
||||||
|
|
Loading…
Reference in a new issue