The synth traces incorrectly print pointer to the synthetic event values instead of the actual value when using u64 type. Fix by addressing the contents of the union properly.
Fixes: ddeea494a16f ("tracing/synthetic: Use union instead of casts") Cc: stable@vger.kernel.org Signed-off-by: Tero Kristo tero.kristo@linux.intel.com --- kernel/trace/trace_events_synth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/trace_events_synth.c b/kernel/trace/trace_events_synth.c index 7fff8235075f..070365959c0a 100644 --- a/kernel/trace/trace_events_synth.c +++ b/kernel/trace/trace_events_synth.c @@ -337,7 +337,7 @@ static void print_synth_event_num_val(struct trace_seq *s, break;
default: - trace_seq_printf(s, print_fmt, name, val, space); + trace_seq_printf(s, print_fmt, name, val->as_u64, space); break; } }
Hi Tero,
On Mon, 11 Sep 2023 17:17:04 +0300 Tero Kristo tero.kristo@linux.intel.com wrote:
The synth traces incorrectly print pointer to the synthetic event values instead of the actual value when using u64 type. Fix by addressing the contents of the union properly.
Thanks for pointing it out. But I would like to see a new "case 8:" print code instead of changing "default". Can you keep the default as it is and add "case 8:" case there?
Thanks,
Fixes: ddeea494a16f ("tracing/synthetic: Use union instead of casts") Cc: stable@vger.kernel.org Signed-off-by: Tero Kristo tero.kristo@linux.intel.com
kernel/trace/trace_events_synth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/trace_events_synth.c b/kernel/trace/trace_events_synth.c index 7fff8235075f..070365959c0a 100644 --- a/kernel/trace/trace_events_synth.c +++ b/kernel/trace/trace_events_synth.c @@ -337,7 +337,7 @@ static void print_synth_event_num_val(struct trace_seq *s, break; default:
trace_seq_printf(s, print_fmt, name, val, space);
break; }trace_seq_printf(s, print_fmt, name, val->as_u64, space);
}
2.40.1
Hi Masami,
On 15/09/2023 09:01, Masami Hiramatsu (Google) wrote:
Hi Tero,
On Mon, 11 Sep 2023 17:17:04 +0300 Tero Kristo tero.kristo@linux.intel.com wrote:
The synth traces incorrectly print pointer to the synthetic event values instead of the actual value when using u64 type. Fix by addressing the contents of the union properly.
Thanks for pointing it out. But I would like to see a new "case 8:" print code instead of changing "default". Can you keep the default as it is and add "case 8:" case there?
Are you sure about that? I think keeping the default as is would just print out a useless pointer value to the synth event itself (which is what happened with u64 type.)
Anyways, that requires a new patch to be created on top as this has hit the mainline as a fix already.
-Tero
Thanks,
Fixes: ddeea494a16f ("tracing/synthetic: Use union instead of casts") Cc: stable@vger.kernel.org Signed-off-by: Tero Kristo tero.kristo@linux.intel.com
kernel/trace/trace_events_synth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/trace_events_synth.c b/kernel/trace/trace_events_synth.c index 7fff8235075f..070365959c0a 100644 --- a/kernel/trace/trace_events_synth.c +++ b/kernel/trace/trace_events_synth.c @@ -337,7 +337,7 @@ static void print_synth_event_num_val(struct trace_seq *s, break; default:
trace_seq_printf(s, print_fmt, name, val, space);
break; } }trace_seq_printf(s, print_fmt, name, val->as_u64, space);
-- 2.40.1
Hi Tero,
On Fri, 15 Sep 2023 13:46:45 +0300 Tero Kristo tero.kristo@linux.intel.com wrote:
Hi Masami,
On 15/09/2023 09:01, Masami Hiramatsu (Google) wrote:
Hi Tero,
On Mon, 11 Sep 2023 17:17:04 +0300 Tero Kristo tero.kristo@linux.intel.com wrote:
The synth traces incorrectly print pointer to the synthetic event values instead of the actual value when using u64 type. Fix by addressing the contents of the union properly.
Thanks for pointing it out. But I would like to see a new "case 8:" print code instead of changing "default". Can you keep the default as it is and add "case 8:" case there?
Are you sure about that? I think keeping the default as is would just print out a useless pointer value to the synth event itself (which is what happened with u64 type.)
Yeah, I think the "default" here means no correct way to show the value in it. So anyway, if we know the size is 8 and there is val->as_u64, there should be "case 8:".
Anyways, that requires a new patch to be created on top as this has hit the mainline as a fix already.
Oops, I missed that.
Thank you!
-Tero
Thanks,
Fixes: ddeea494a16f ("tracing/synthetic: Use union instead of casts") Cc: stable@vger.kernel.org Signed-off-by: Tero Kristo tero.kristo@linux.intel.com
kernel/trace/trace_events_synth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/trace_events_synth.c b/kernel/trace/trace_events_synth.c index 7fff8235075f..070365959c0a 100644 --- a/kernel/trace/trace_events_synth.c +++ b/kernel/trace/trace_events_synth.c @@ -337,7 +337,7 @@ static void print_synth_event_num_val(struct trace_seq *s, break; default:
trace_seq_printf(s, print_fmt, name, val, space);
break; } }trace_seq_printf(s, print_fmt, name, val->as_u64, space);
-- 2.40.1
On Fri, 15 Sep 2023 23:16:13 +0900 Masami Hiramatsu (Google) mhiramat@kernel.org wrote:
Anyways, that requires a new patch to be created on top as this has hit the mainline as a fix already.
Oops, I missed that.
Yeah, I took that because it matched the original case, which was it being u64.
-- Steve
linux-stable-mirror@lists.linaro.org