From: Steven Rostedt <rostedt@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Andrew Morton <akpm@linux-foundation.org>,
stable@vger.kernel.org, sashiko-bot@kernel.org,
Donggeun Yoo <donggeunyoo.kernel@gmail.com>
Subject: [for-next][PATCH 17/18] tracing: Fix 64-bit and signed histogram fields on 32-bit kernels
Date: Fri, 16 Oct 2026 10:31:32 -0400 [thread overview]
Message-ID: <20261016143137.562970476@kernel.org> (raw)
In-Reply-To: <20261016143115.392980228@kernel.org>
From: Donggeun Yoo <donggeunyoo.kernel@gmail.com>
DEFINE_HIST_FIELD_FN() reads a trace event field and widens it to the u64
the histogram uses as a key or a value:
type *addr = (type *)(event + hist_field->field->offset);
return (u64)(unsigned long)*addr;
unsigned long is 32 bits on a 32-bit kernel, so the intermediate cast
discards the upper half of a 64-bit field, and widens a signed field by
zero extension from 32 bits rather than sign extension from its own
width. Five of the eight instantiations are wrong there: s64, u64, s32,
s16 and s8.
The cast came in with commit 79e577cbce4c ("tracing: Support string type
key properly"), which also added hist_field_dynstring() and
hist_field_pstring(). Those convert a char * to u64 and do warn without
an unsigned long in between on 32-bit. DEFINE_HIST_FIELD_FN() converts an
integer and never a pointer, so it gains nothing from the cast and only
loses information.
Drop the intermediate cast and let the usual arithmetic conversions widen
*addr according to its own type. unsigned long is 64 bits on LP64, so the
two forms are identical there and 64-bit kernels are unaffected.
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20260917015532.103081-1-donggeunyoo.kernel@gmail.com
Fixes: 79e577cbce4c ("tracing: Support string type key properly")
Reported-by: sashiko-bot@kernel.org
Closes: https://lore.kernel.org/all/20260914054614.82A9B1F000FF@smtp.kernel.org/
Signed-off-by: Donggeun Yoo <donggeunyoo.kernel@gmail.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
kernel/trace/trace_events_hist.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
index c150e1130a5f..7d3bb7da4dd1 100644
--- a/kernel/trace/trace_events_hist.c
+++ b/kernel/trace/trace_events_hist.c
@@ -466,7 +466,7 @@ static u64 hist_field_unary_minus(struct hist_field *hist_field,
{ \
type *addr = (type *)(event + hist_field->field->offset); \
\
- return (u64)(unsigned long)*addr; \
+ return (u64)*addr; \
}
DEFINE_HIST_FIELD_FN(s64);
--
2.53.0
next prev parent reply other threads:[~2026-10-16 14:31 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-16 14:31 [for-next][PATCH 00/18] tracing: Updates for 7.4 Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 01/18] tracing: Add "within" filter for call-stack-based event filtering Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 02/18] tracnig: Add proper error message for glob use with "within" filter Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 03/18] tracing: Remove duplicate declaration of ftrace_set_clr_event() Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 04/18] tracing: Stop modifying the input buffer in ftrace_set_clr_event() Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 05/18] tracing: Split the event string parsing logic into a dedicated function Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 06/18] tracing: Add a test for ftrace_parse_event_string() Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 07/18] tracing: Add a filter argument to __ftrace_set_clr_event() Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 08/18] tracing: Parse filter from boot event string Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 09/18] ring-buffer: Rename ring_buffer_size() to ring_buffer_capacity() Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 10/18] tracing: Rename trace_array::entries to capacity Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 11/18] tracing: Rename tracing_entries_fops to tracing_capacity_fops Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 12/18] tracing: Print the bucket size as unsigned Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 13/18] tracing: Add the bucket size to expr_field_str() Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 14/18] tracing: Only report the stacktrace modifier on a real field Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 15/18] tracing: Unregister field variable histograms when the command fails Steven Rostedt
2026-10-16 14:31 ` [for-next][PATCH 16/18] tracing: Clamp the printed end of a histogram bucket at U64_MAX Steven Rostedt
2026-10-16 14:31 ` Steven Rostedt [this message]
2026-10-16 14:31 ` [for-next][PATCH 18/18] tracing: Print a signed histogram key as signed Steven Rostedt
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=20261016143137.562970476@kernel.org \
--to=rostedt@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=donggeunyoo.kernel@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=sashiko-bot@kernel.org \
--cc=stable@vger.kernel.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
all inboxes | Powered by JetHome®