linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH -tip 1/2] Kconfig: Bump required compiler version of KASAN and UBSAN
@ 2020-06-02 18:44 Marco Elver
  2020-06-02 18:44 ` [PATCH -tip 2/2] compiler_types.h: Add __no_sanitize_{address,undefined} to noinstr Marco Elver
                   ` (3 more replies)
  0 siblings, 4 replies; 21+ messages in thread
From: Marco Elver @ 2020-06-02 18:44 UTC (permalink / raw)
  To: elver
  Cc: will, peterz, bp, tglx, mingo, clang-built-linux, paulmck,
	dvyukov, glider, andreyknvl, kasan-dev, linux-kernel

Adds config variable CC_HAS_WORKING_NOSANITIZE, which will be true if we
have a compiler that does not fail builds due to no_sanitize functions.
This does not yet mean they work as intended, but for automated
build-tests, this is the minimum requirement.

For example, we require that __always_inline functions used from
no_sanitize functions do not generate instrumentation. On GCC <= 7 this
fails to build entirely, therefore we make the minimum version GCC 8.

For KCSAN this is a non-functional change, however, we should add it in
case this variable changes in future.

Link: https://lkml.kernel.org/r/20200602175859.GC2604@hirez.programming.kicks-ass.net
Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Marco Elver <elver@google.com>
---
Apply after:
https://lkml.kernel.org/r/20200602173103.931412766@infradead.org
---
 init/Kconfig      | 3 +++
 lib/Kconfig.kasan | 1 +
 lib/Kconfig.kcsan | 1 +
 lib/Kconfig.ubsan | 1 +
 4 files changed, 6 insertions(+)

diff --git a/init/Kconfig b/init/Kconfig
index 0f72eb4ffc87..3e8565bc8376 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -39,6 +39,9 @@ config TOOLS_SUPPORT_RELR
 config CC_HAS_ASM_INLINE
 	def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
 
+config CC_HAS_WORKING_NOSANITIZE
+	def_bool !CC_IS_GCC || GCC_VERSION >= 80000
+
 config CONSTRUCTORS
 	bool
 	depends on !UML
diff --git a/lib/Kconfig.kasan b/lib/Kconfig.kasan
index 81f5464ea9e1..15e6c4b26a40 100644
--- a/lib/Kconfig.kasan
+++ b/lib/Kconfig.kasan
@@ -20,6 +20,7 @@ config KASAN
 	depends on (HAVE_ARCH_KASAN && CC_HAS_KASAN_GENERIC) || \
 		   (HAVE_ARCH_KASAN_SW_TAGS && CC_HAS_KASAN_SW_TAGS)
 	depends on (SLUB && SYSFS) || (SLAB && !DEBUG_SLAB)
+	depends on CC_HAS_WORKING_NOSANITIZE
 	help
 	  Enables KASAN (KernelAddressSANitizer) - runtime memory debugger,
 	  designed to find out-of-bounds accesses and use-after-free bugs.
diff --git a/lib/Kconfig.kcsan b/lib/Kconfig.kcsan
index 5ee88e5119c2..2ab4a7f511c9 100644
--- a/lib/Kconfig.kcsan
+++ b/lib/Kconfig.kcsan
@@ -5,6 +5,7 @@ config HAVE_ARCH_KCSAN
 
 config HAVE_KCSAN_COMPILER
 	def_bool CC_IS_CLANG && $(cc-option,-fsanitize=thread -mllvm -tsan-distinguish-volatile=1)
+	depends on CC_HAS_WORKING_NOSANITIZE
 	help
 	  For the list of compilers that support KCSAN, please see
 	  <file:Documentation/dev-tools/kcsan.rst>.
diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan
index a5ba2fd51823..f725d126af7d 100644
--- a/lib/Kconfig.ubsan
+++ b/lib/Kconfig.ubsan
@@ -4,6 +4,7 @@ config ARCH_HAS_UBSAN_SANITIZE_ALL
 
 menuconfig UBSAN
 	bool "Undefined behaviour sanity checker"
+	depends on CC_HAS_WORKING_NOSANITIZE
 	help
 	  This option enables the Undefined Behaviour sanity checker.
 	  Compile-time instrumentation is used to detect various undefined
-- 
2.27.0.rc2.251.g90737beb825-goog


^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2020-06-04  5:59 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-02 18:44 [PATCH -tip 1/2] Kconfig: Bump required compiler version of KASAN and UBSAN Marco Elver
2020-06-02 18:44 ` [PATCH -tip 2/2] compiler_types.h: Add __no_sanitize_{address,undefined} to noinstr Marco Elver
2020-06-02 18:49   ` Nick Desaulniers
2020-06-02 18:55     ` Marco Elver
2020-06-03 14:06     ` Miguel Ojeda
2020-06-03 13:35   ` Andrey Konovalov
2020-06-02 18:53 ` [PATCH -tip 1/2] Kconfig: Bump required compiler version of KASAN and UBSAN Andrey Konovalov
2020-06-02 19:07   ` Marco Elver
2020-06-02 19:12     ` Andrey Konovalov
2020-06-02 18:57 ` Nick Desaulniers
2020-06-02 19:01   ` Marco Elver
2020-06-02 19:19   ` Peter Zijlstra
2020-06-02 19:25     ` Marco Elver
2020-06-02 19:38       ` Peter Zijlstra
2020-06-02 19:59         ` Nick Desaulniers
2020-06-03  8:48         ` [PATCH] rcu: Fixup noinstr warnings Peter Zijlstra
2020-06-03  9:59           ` Paul E. McKenney
2020-06-03 10:52             ` Peter Zijlstra
2020-06-03 16:29               ` Paul E. McKenney
2020-06-03 13:35 ` [PATCH -tip 1/2] Kconfig: Bump required compiler version of KASAN and UBSAN Andrey Konovalov
2020-06-04  5:59   ` Marco Elver

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).