From: Sven Schnelle <svens@linux.ibm.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Linux Trace Kernel <linux-trace-kernel@vger.kernel.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Mark Rutland <mark.rutland@arm.com>
Subject: Re: [RESEND][PATCH] tracing/synthetic: Fix order of struct trace_dynamic_info
Date: Mon, 11 Sep 2023 07:59:04 +0200 [thread overview]
Message-ID: <yt9d8r9djlnb.fsf@linux.ibm.com> (raw)
In-Reply-To: <20230908163929.2c25f3dc@gandalf.local.home> (Steven Rostedt's message of "Fri, 8 Sep 2023 16:39:29 -0400")
Hi Steven,
Steven Rostedt <rostedt@goodmis.org> writes:
> From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
>
> To make handling BIG and LITTLE endian better the offset/len of dynamic
> fields of the synthetic events was changed into a structure of:
>
> struct trace_dynamic_info {
> #ifdef CONFIG_CPU_BIG_ENDIAN
> u16 offset;
> u16 len;
> #else
> u16 len;
> u16 offset;
> #endif
> };
>
> to replace the manual changes of:
>
> data_offset = offset & 0xffff;
> data_offest = len << 16;
>
> But if you look closely, the above is:
>
> <len> << 16 | offset
>
> Which in little endian would be in memory:
>
> offset_lo offset_hi len_lo len_hi
>
> and in big endian:
>
> len_hi len_lo offset_hi offset_lo
>
> Which if broken into a structure would be:
>
> struct trace_dynamic_info {
> #ifdef CONFIG_CPU_BIG_ENDIAN
> u16 len;
> u16 offset;
> #else
> u16 offset;
> u16 len;
> #endif
> };
>
> Which is the opposite of what was defined.
>
> Fix this and just to be safe also add "__packed".
>
> Link: https://lore.kernel.org/all/20230908154417.5172e343@gandalf.local.home/
>
> Cc: stable@vger.kernel.org
> Fixes: ddeea494a16f3 ("tracing/synthetic: Use union instead of casts")
> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
> ---
>
> [ Resending to the correct mailing list this time :-p ]
>
> include/linux/trace_events.h | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h
> index 12f875e9e69a..21ae37e49319 100644
> --- a/include/linux/trace_events.h
> +++ b/include/linux/trace_events.h
> @@ -62,13 +62,13 @@ void trace_event_printf(struct trace_iterator *iter, const char *fmt, ...);
> /* Used to find the offset and length of dynamic fields in trace events */
> struct trace_dynamic_info {
> #ifdef CONFIG_CPU_BIG_ENDIAN
> - u16 offset;
> u16 len;
> + u16 offset;
> #else
> - u16 len;
> u16 offset;
> + u16 len;
> #endif
> -};
> +} __packed;
>
> /*
> * The trace entry - the most basic unit of tracing. This is what
This issue was also present on BE, but as you noted "covered" by the
broken test case. With this patch everything works as expected. So:
Tested-by: Sven Schnelle <svens@linux.ibm.com>
prev parent reply other threads:[~2023-09-11 5:59 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-08 20:39 [RESEND][PATCH] tracing/synthetic: Fix order of struct trace_dynamic_info Steven Rostedt
2023-09-11 0:26 ` Masami Hiramatsu
2023-09-11 22:02 ` Steven Rostedt
2023-09-11 5:59 ` Sven Schnelle [this message]
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=yt9d8r9djlnb.fsf@linux.ibm.com \
--to=svens@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mhiramat@kernel.org \
--cc=rostedt@goodmis.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox