]> Gentwo Git Trees - linux/.git/commitdiff
bug: Implement WARN_ON() using __WARN_FLAGS()
authorPeter Zijlstra <peterz@infradead.org>
Mon, 10 Nov 2025 10:58:37 +0000 (11:58 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Fri, 21 Nov 2025 10:21:32 +0000 (11:21 +0100)
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
include/asm-generic/bug.h

index 228873e13b95c48e986b1ea9dd16edcea76f5f93..4bfbeae30c4285e8fe6873f6c21737181052a799 100644 (file)
@@ -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 */