Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tracepoint: Do not warn for unused event that is exported

There are a few generic events that may only be used by modules. They are
defined and then set with EXPORT_TRACEPOINT*(). Mark events that are
exported as being used, even though they still waste memory in the kernel
proper.

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nicolas Schier <nicolas.schier@linux.dev>
Cc: Nick Desaulniers <nick.desaulniers+lkml@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Link: https://lore.kernel.org/20251022004453.089254920@kernel.org
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>

+4 -2
+4 -2
include/linux/tracepoint.h
··· 227 227 * defined tracepoints are used. It is discarded after the build. 228 228 */ 229 229 # define TRACEPOINT_CHECK(name) \ 230 - static const char __used __section("__tracepoint_check") __trace_check[] = \ 231 - #name; 230 + static const char __used __section("__tracepoint_check") \ 231 + __trace_check_##name[] = #name; 232 232 233 233 /* 234 234 * Make sure the alignment of the structure in the __tracepoints section will ··· 382 382 __DEFINE_TRACE_EXT(_name, NULL, PARAMS(_proto), PARAMS(_args)); 383 383 384 384 #define EXPORT_TRACEPOINT_SYMBOL_GPL(name) \ 385 + TRACEPOINT_CHECK(name) \ 385 386 EXPORT_SYMBOL_GPL(__tracepoint_##name); \ 386 387 EXPORT_SYMBOL_GPL(__traceiter_##name); \ 387 388 EXPORT_STATIC_CALL_GPL(tp_func_##name) 388 389 #define EXPORT_TRACEPOINT_SYMBOL(name) \ 390 + TRACEPOINT_CHECK(name) \ 389 391 EXPORT_SYMBOL(__tracepoint_##name); \ 390 392 EXPORT_SYMBOL(__traceiter_##name); \ 391 393 EXPORT_STATIC_CALL(tp_func_##name)