From: Steven Rostedt <rostedt@goodmis.org>
To: Qian-Yu Lin <tiffany019230@gmail.com>
Cc: mhiramat@kernel.org, mathieu.desnoyers@efficios.com,
linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org
Subject: Re: [PATCH] trace_printk: replace _______STR with __UNIQUE_ID(STR)
Date: Wed, 29 Apr 2026 13:42:26 -0400 [thread overview]
Message-ID: <20260429134226.49e95e9d@robin> (raw)
In-Reply-To: <20260429165707.7020-1-tiffany019230@gmail.com>
On Thu, 30 Apr 2026 00:57:07 +0800
Qian-Yu Lin <tiffany019230@gmail.com> wrote:
> The macro trace_printk() uses a hardcoded identifier _______STR
> within a statement expression, which can lead to variable name
> shadowing if a caller happens to use the same name in its scope.
Has this ever been a problem?
>
> Following the pattern in commit 24ba53017e18 ("rcu: Replace ________p1
> and _________p1 with __UNIQUE_ID(rcu)") and commit 589a9785ee3a
> ("min/max: remove sparse warnings when they're nested"), replace the
> hardcoded identifier with __UNIQUE_ID(STR).
>
> Since __UNIQUE_ID() must be expanded once to remain consistent across
> declaration and sizeof() within the statement expression, introduce a
> nested helper macro ___trace_printk.
Hmm, so we are replacing one name with underscores with another name
with underscores?
>
> Signed-off-by: Qian-Yu Lin <tiffany019230@gmail.com>
> ---
> include/linux/trace_printk.h | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/include/linux/trace_printk.h b/include/linux/trace_printk.h
> index 2670ec7f4262..060eccb40838 100644
> --- a/include/linux/trace_printk.h
> +++ b/include/linux/trace_printk.h
> @@ -2,6 +2,7 @@
> #ifndef _LINUX_TRACE_PRINTK_H
> #define _LINUX_TRACE_PRINTK_H
>
> +#include <linux/compiler.h>
People are already saying that trace_printk.h slows down the compile.
Does this add any overhead to the compile?
-- Steve
> #include <linux/compiler_attributes.h>
> #include <linux/instruction_pointer.h>
> #include <linux/stddef.h>
> @@ -84,15 +85,18 @@ do { \
> * let gcc optimize the rest.
> */
>
> -#define trace_printk(fmt, ...) \
> +#define ___trace_printk(fmt, str, ...) \
> do { \
> - char _______STR[] = __stringify((__VA_ARGS__)); \
> - if (sizeof(_______STR) > 3) \
> + char str[] = __stringify((__VA_ARGS__)); \
> + if (sizeof(str) > 3) \
> do_trace_printk(fmt, ##__VA_ARGS__); \
> else \
> trace_puts(fmt); \
> } while (0)
>
> +#define trace_printk(fmt, ...) \
> + ___trace_printk(fmt, __UNIQUE_ID(str), ##__VA_ARGS__)
> +
> #define do_trace_printk(fmt, args...) \
> do { \
> static const char *trace_printk_fmt __used \
next prev parent reply other threads:[~2026-04-29 17:42 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-29 16:57 [PATCH] trace_printk: replace _______STR with __UNIQUE_ID(STR) Qian-Yu Lin
2026-04-29 17:42 ` Steven Rostedt [this message]
2026-04-29 21:47 ` David Laight
2026-05-01 14:51 ` Qian-Yu Lin
2026-05-01 14:40 ` Qian-Yu Lin
2026-05-01 15:19 ` Steven Rostedt
2026-05-01 16:17 ` Qian-Yu Lin
2026-05-01 16:21 ` Steven Rostedt
2026-05-01 21:13 ` David Laight
2026-05-02 7:37 ` Qian-Yu Lin
2026-05-01 16:28 ` [PATCH v2] trace_printk: replace ___STR with compound literal Qian-Yu Lin
2026-05-02 7:55 ` [PATCH v3] trace_printk: remove local variable for argument detection Qian-Yu Lin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260429134226.49e95e9d@robin \
--to=rostedt@goodmis.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=tiffany019230@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.