]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
kmsan: expose KMSAN_WARN_ON()
authorIlya Leoshkevich <iii@linux.ibm.com>
Fri, 21 Jun 2024 11:35:00 +0000 (13:35 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 4 Jul 2024 02:30:23 +0000 (19:30 -0700)
KMSAN_WARN_ON() is required for implementing s390-specific KMSAN
functions, but right now it's available only to the KMSAN internal
functions.  Expose it to subsystems through <linux/kmsan.h>.

Link: https://lkml.kernel.org/r/20240621113706.315500-17-iii@linux.ibm.com
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: Alexander Potapenko <glider@google.com>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: <kasan-dev@googlegroups.com>
Cc: Marco Elver <elver@google.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Roman Gushchin <roman.gushchin@linux.dev>
Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/kmsan.h
mm/kmsan/kmsan.h

index 7109644f4c19c2a4c5acc60210eff28a01327b9a..2b1432cc16d5970dc541fb41734cbaf3672eaba6 100644 (file)
@@ -268,6 +268,29 @@ static inline void *memset_no_sanitize_memory(void *s, int c, size_t n)
        return __memset(s, c, n);
 }
 
+extern bool kmsan_enabled;
+extern int panic_on_kmsan;
+
+/*
+ * KMSAN performs a lot of consistency checks that are currently enabled by
+ * default. BUG_ON is normally discouraged in the kernel, unless used for
+ * debugging, but KMSAN itself is a debugging tool, so it makes little sense to
+ * recover if something goes wrong.
+ */
+#define KMSAN_WARN_ON(cond)                                           \
+       ({                                                            \
+               const bool __cond = WARN_ON(cond);                    \
+               if (unlikely(__cond)) {                               \
+                       WRITE_ONCE(kmsan_enabled, false);             \
+                       if (panic_on_kmsan) {                         \
+                               /* Can't call panic() here because */ \
+                               /* of uaccess checks. */              \
+                               BUG();                                \
+                       }                                             \
+               }                                                     \
+               __cond;                                               \
+       })
+
 #else
 
 static inline void kmsan_init_shadow(void)
@@ -380,6 +403,8 @@ static inline void *memset_no_sanitize_memory(void *s, int c, size_t n)
        return memset(s, c, n);
 }
 
+#define KMSAN_WARN_ON WARN_ON
+
 #endif
 
 #endif /* _LINUX_KMSAN_H */
index 34b83c301d57bd00d0d50b7726c537abf186d749..91a360a31e85490b7e095ece0eb3e94a80e1d6e9 100644 (file)
@@ -11,6 +11,7 @@
 #define __MM_KMSAN_KMSAN_H
 
 #include <linux/irqflags.h>
+#include <linux/kmsan.h>
 #include <linux/mm.h>
 #include <linux/nmi.h>
 #include <linux/pgtable.h>
 #define KMSAN_META_SHADOW (false)
 #define KMSAN_META_ORIGIN (true)
 
-extern bool kmsan_enabled;
-extern int panic_on_kmsan;
-
-/*
- * KMSAN performs a lot of consistency checks that are currently enabled by
- * default. BUG_ON is normally discouraged in the kernel, unless used for
- * debugging, but KMSAN itself is a debugging tool, so it makes little sense to
- * recover if something goes wrong.
- */
-#define KMSAN_WARN_ON(cond)                                           \
-       ({                                                            \
-               const bool __cond = WARN_ON(cond);                    \
-               if (unlikely(__cond)) {                               \
-                       WRITE_ONCE(kmsan_enabled, false);             \
-                       if (panic_on_kmsan) {                         \
-                               /* Can't call panic() here because */ \
-                               /* of uaccess checks. */              \
-                               BUG();                                \
-                       }                                             \
-               }                                                     \
-               __cond;                                               \
-       })
-
 /*
  * A pair of metadata pointers to be returned by the instrumentation functions.
  */