aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/compiler-gcc.h
diff options
context:
space:
mode:
authorVasily Gorbik <gor@linux.ibm.com>2017-11-20 11:16:14 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2018-10-09 11:21:25 +0200
commitdde709d1361ab50d3b9f2824f72b4374f5582e84 (patch)
tree441e7bde41fc063c7f23f31578560ca6174d6f16 /include/linux/compiler-gcc.h
parents390/kasan: use noexec and large pages (diff)
downloadlinux-dev-dde709d1361ab50d3b9f2824f72b4374f5582e84.tar.xz
linux-dev-dde709d1361ab50d3b9f2824f72b4374f5582e84.zip
compiler: introduce __no_sanitize_address_or_inline
Due to conflict between kasan instrumentation and inlining https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368 functions which are defined as inline could not be called from functions defined with __no_sanitize_address. Introduce __no_sanitize_address_or_inline which would expand to __no_sanitize_address when the kernel is built with kasan support and to inline otherwise. This helps to avoid disabling kasan instrumentation for entire files. Reviewed-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'include/linux/compiler-gcc.h')
-rw-r--r--include/linux/compiler-gcc.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index 763bbad1e258..997ade08a79d 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -208,6 +208,12 @@
* Conflicts with inlining: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368
*/
#define __no_sanitize_address __attribute__((no_sanitize_address))
+#ifdef CONFIG_KASAN
+#define __no_sanitize_address_or_inline \
+ __no_sanitize_address __maybe_unused notrace
+#else
+#define __no_sanitize_address_or_inline inline
+#endif
#endif
#if GCC_VERSION >= 50100
@@ -225,6 +231,7 @@
#if !defined(__no_sanitize_address)
#define __no_sanitize_address
+#define __no_sanitize_address_or_inline inline
#endif
/*