Commit 4f1b701f authored by Peter Zijlstra's avatar Peter Zijlstra
Browse files

x86/bug: Use BUG_FORMAT for DEBUG_BUGVERBOSE_DETAILED



Since we have an explicit format string, use it for the condition string
instead of frobbing it in the file string.

Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20251110115758.097401406@infradead.org
parent 0a52d339
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -74,13 +74,19 @@
	".popsection\n"							\
	extra

#ifdef CONFIG_DEBUG_BUGVERBOSE_DETAILED
#define WARN_CONDITION_STR(cond_str) cond_str
#else
#define WARN_CONDITION_STR(cond_str) NULL
#endif

#define _BUG_FLAGS(cond_str, ins, flags, extra)				\
do {									\
	asm_inline volatile(_BUG_FLAGS_ASM(ins, "%c[fmt]", "%c[file]",	\
					   "%c[line]", "%c[fl]",	\
					   "%c[size]", extra)		\
		   : : [fmt] "i" (NULL),				\
		       [file] "i" (WARN_CONDITION_STR(cond_str) __FILE__), \
		   : : [fmt] "i" (WARN_CONDITION_STR(cond_str)),	\
		       [file] "i" (__FILE__),				\
		       [line] "i" (__LINE__),				\
		       [fl] "i" (flags),				\
		       [size] "i" (sizeof(struct bug_entry)));		\
+5 −3
Original line number Diff line number Diff line
@@ -18,11 +18,13 @@
#define BUG_GET_TAINT(bug)	((bug)->flags >> 8)
#endif

#ifndef WARN_CONDITION_STR
#ifdef CONFIG_DEBUG_BUGVERBOSE_DETAILED
# define WARN_CONDITION_STR(cond_str) cond_str
# define WARN_CONDITION_STR(cond_str) "[" cond_str "] "
#else
# define WARN_CONDITION_STR(cond_str)
#endif
#endif /* WARN_CONDITION_STR */

#ifndef __ASSEMBLY__
#include <linux/panic.h>
@@ -107,7 +109,7 @@ extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
#define WARN_ON(condition) ({						\
	int __ret_warn_on = !!(condition);				\
	if (unlikely(__ret_warn_on))					\
		__WARN_FLAGS("["#condition"] ",				\
		__WARN_FLAGS(#condition,				\
			     BUGFLAG_TAINT(TAINT_WARN));		\
	unlikely(__ret_warn_on);					\
})
@@ -117,7 +119,7 @@ extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
#define WARN_ON_ONCE(condition) ({					\
	int __ret_warn_on = !!(condition);				\
	if (unlikely(__ret_warn_on))					\
		__WARN_FLAGS("["#condition"] ",				\
		__WARN_FLAGS(#condition,				\
			     BUGFLAG_ONCE |				\
			     BUGFLAG_TAINT(TAINT_WARN));		\
	unlikely(__ret_warn_on);					\