Commit 1a6a1dbe authored by Anders Roxell's avatar Anders Roxell Committed by Linus Torvalds
Browse files

lib/ubsan: default UBSAN_ALIGNMENT to not set

When booting an allmodconfig kernel, there are a lot of false-positives.
With a message like this 'UBSAN: Undefined behaviour in...' with a call
trace that follows.

UBSAN warnings are a result of enabling noisy CONFIG_UBSAN_ALIGNMENT
which is disabled by default if HAVE_EFFICIENT_UNALIGNED_ACCESS=y.

It's noisy even if don't have efficient unaligned access, e.g.  people
often add __cacheline_aligned_in_smp in structs, but forget to align
allocations of such struct (kmalloc() give 8-byte alignment in worst
case).

Rework so that when building a allmodconfig kernel that turns everything
into '=m' or '=y' will turn off UBSAN_ALIGNMENT.

[aryabinin@virtuozzo.com: changelog addition]
Link: http://lkml.kernel.org/r/20181217150326.30933-1-anders.roxell@linaro.org


Signed-off-by: default avatarAnders Roxell <anders.roxell@linaro.org>
Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
Acked-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 663cb634
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -27,15 +27,19 @@ config UBSAN_SANITIZE_ALL
	  Enabling this option will get kernel image size increased
	  significantly.

config UBSAN_ALIGNMENT
	bool "Enable checking of pointers alignment"
config UBSAN_NO_ALIGNMENT
	bool "Disable checking of pointers alignment"
	depends on UBSAN
	default y if !HAVE_EFFICIENT_UNALIGNED_ACCESS
	default y if HAVE_EFFICIENT_UNALIGNED_ACCESS
	help
	  This option enables detection of unaligned memory accesses.
	  Enabling this option on architectures that support unaligned
	  This option disables the check of unaligned memory accesses.
	  This option should be used when building allmodconfig.
	  Disabling this option on architectures that support unaligned
	  accesses may produce a lot of false positives.

config UBSAN_ALIGNMENT
	def_bool !UBSAN_NO_ALIGNMENT

config TEST_UBSAN
	tristate "Module for testing for undefined behavior detection"
	depends on m && UBSAN