Commit 3fd45b87 authored by Peter Zijlstra's avatar Peter Zijlstra
Browse files

bug: Implement WARN_ON() using __WARN_FLAGS()



This completes 3bc3c9c3 ("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: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20251110115757.690999560@infradead.org
parent 7d2c27a0
Loading
Loading
Loading
Loading
+21 −7
Original line number Diff line number Diff line
@@ -109,12 +109,25 @@ 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)

#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))					\
@@ -124,6 +137,7 @@ extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
	unlikely(__ret_warn_on);					\
})
#endif
#endif /* __WARN_FLAGS */

/* used internally by panic.c */