lib/ubsan: remove null-pointer checks [Linux 4.18]

This Linux kernel change "lib/ubsan: remove null-pointer checks" is included in the Linux 4.18 release. This change is authored by Andrey Ryabinin <aryabinin [at] virtuozzo.com> on Fri Aug 10 17:23:03 2018 -0700. The commit for this change in Linux stable tree is 3ca17b1 (patch).

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/[email protected]
Signed-off-by: Andrey Ryabinin <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>

There are 17 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 arch/parisc/Kconfig    |  1 -
 arch/s390/Kconfig      |  1 -
 lib/Kconfig.ubsan      | 11 -----------
 scripts/Makefile.ubsan |  4 ----
 4 files changed, 17 deletions(-)

diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 46f656b..e7705dd 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -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
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 8a1863d..4fe5b2a 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -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
diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan
index 19d42ea..98fa559 100644
--- a/lib/Kconfig.ubsan
+++ b/lib/Kconfig.ubsan
@@ -1,9 +1,6 @@
 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
diff --git a/scripts/Makefile.ubsan b/scripts/Makefile.ubsan
index b593b36..38b2b48 100644
--- a/scripts/Makefile.ubsan
+++ b/scripts/Makefile.ubsan
@@ -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)

Leave a Reply

Your email address will not be published. Required fields are marked *