summaryrefslogtreecommitdiff
path: root/include/asm-generic
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2025-11-10 11:58:37 +0100
committerPeter Zijlstra <peterz@infradead.org>2025-11-21 11:21:32 +0100
commit3fd45b871fde00f4fac96318a136bd256ec0b90b (patch)
tree45340594d7359c3e9ee069f17b67bd78a922879e /include/asm-generic
parent7d2c27a0ec5ecec980b623ded45758918c00b164 (diff)
bug: Implement WARN_ON() using __WARN_FLAGS()
This completes 3bc3c9c3ab6d ("bugs/core: Pass down the condition string of WARN_ON_ONCE(cond) warnings to __WARN_FLAGS()") and makes WARN_ON() and WARN_ON_ONCE() behaviour consistent. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://patch.msgid.link/20251110115757.690999560@infradead.org
Diffstat (limited to 'include/asm-generic')
-rw-r--r--include/asm-generic/bug.h28
1 files changed, 21 insertions, 7 deletions
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
index 228873e13b95..4bfbeae30c42 100644
--- a/include/asm-generic/bug.h
+++ b/include/asm-generic/bug.h
@@ -109,21 +109,35 @@ extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
} while (0)
#else
#define __WARN() __WARN_FLAGS("", BUGFLAG_TAINT(TAINT_WARN))
+
#define __WARN_printf(taint, arg...) do { \
instrumentation_begin(); \
__warn_printk(arg); \
__WARN_FLAGS("", BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
instrumentation_end(); \
} while (0)
-#define WARN_ON_ONCE(condition) ({ \
- int __ret_warn_on = !!(condition); \
- if (unlikely(__ret_warn_on)) \
- __WARN_FLAGS("["#condition"] ", \
- BUGFLAG_ONCE | \
- BUGFLAG_TAINT(TAINT_WARN)); \
- unlikely(__ret_warn_on); \
+
+#ifndef WARN_ON
+#define WARN_ON(condition) ({ \
+ int __ret_warn_on = !!(condition); \
+ if (unlikely(__ret_warn_on)) \
+ __WARN_FLAGS("["#condition"] ", \
+ BUGFLAG_TAINT(TAINT_WARN)); \
+ unlikely(__ret_warn_on); \
+})
+#endif
+
+#ifndef WARN_ON_ONCE
+#define WARN_ON_ONCE(condition) ({ \
+ int __ret_warn_on = !!(condition); \
+ if (unlikely(__ret_warn_on)) \
+ __WARN_FLAGS("["#condition"] ", \
+ BUGFLAG_ONCE | \
+ BUGFLAG_TAINT(TAINT_WARN)); \
+ unlikely(__ret_warn_on); \
})
#endif
+#endif /* __WARN_FLAGS */
/* used internally by panic.c */