Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3ca17b1f authored by Andrey Ryabinin's avatar Andrey Ryabinin Committed by Linus Torvalds
Browse files

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: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 5832fcf9
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -11,7 +11,6 @@ config PARISC
	select ARCH_HAS_ELF_RANDOMIZE
	select ARCH_HAS_STRICT_KERNEL_RWX
	select ARCH_HAS_UBSAN_SANITIZE_ALL
	select ARCH_WANTS_UBSAN_NO_NULL
	select ARCH_SUPPORTS_MEMORY_FAILURE
	select RTC_CLASS
	select RTC_DRV_GENERIC
+0 −1
Original line number Diff line number Diff line
@@ -106,7 +106,6 @@ config S390
	select ARCH_USE_BUILTIN_BSWAP
	select ARCH_USE_CMPXCHG_LOCKREF
	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
	select ARCH_WANTS_UBSAN_NO_NULL
	select ARCH_WANT_IPC_PARSE_VERSION
	select BUILDTIME_EXTABLE_SORT
	select CLONE_BACKWARDS2
+0 −11
Original line number Diff line number Diff line
config ARCH_HAS_UBSAN_SANITIZE_ALL
	bool

config ARCH_WANTS_UBSAN_NO_NULL
	def_bool n

config UBSAN
	bool "Undefined behaviour sanity checker"
	help
@@ -39,14 +36,6 @@ config UBSAN_ALIGNMENT
	  Enabling this option on architectures that support unaligned
	  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
	tristate "Module for testing for undefined behavior detection"
	depends on m && UBSAN
+0 −4
Original line number Diff line number Diff line
@@ -14,10 +14,6 @@ ifdef CONFIG_UBSAN_ALIGNMENT
      CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment)
endif

ifdef CONFIG_UBSAN_NULL
      CFLAGS_UBSAN += $(call cc-option, -fsanitize=null)
endif

      # -fsanitize=* options makes GCC less smart than usual and
      # increase number of 'maybe-uninitialized false-positives
      CFLAGS_UBSAN += $(call cc-option, -Wno-maybe-uninitialized)