diff mbox series

tracing/synthetic: Print out u64 values properly

Message ID 20230911141704.3585965-1-tero.kristo@linux.intel.com (mailing list archive)
State Accepted
Commit 62663b849662c1a5126b6274d91671b90566ef13
Headers show
Series tracing/synthetic: Print out u64 values properly | expand

Commit Message

Tero Kristo Sept. 11, 2023, 2:17 p.m. UTC
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(-)

Comments

Masami Hiramatsu (Google) Sept. 15, 2023, 6:01 a.m. UTC | #1
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);
> +		trace_seq_printf(s, print_fmt, name, val->as_u64, space);
>  		break;
>  	}
>  }
> -- 
> 2.40.1
>
Tero Kristo Sept. 15, 2023, 10:46 a.m. UTC | #2
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);
>> +		trace_seq_printf(s, print_fmt, name, val->as_u64, space);
>>   		break;
>>   	}
>>   }
>> -- 
>> 2.40.1
>>
>
Masami Hiramatsu (Google) Sept. 15, 2023, 2:16 p.m. UTC | #3
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);
> >> +		trace_seq_printf(s, print_fmt, name, val->as_u64, space);
> >>   		break;
> >>   	}
> >>   }
> >> -- 
> >> 2.40.1
> >>
> >
Steven Rostedt Sept. 15, 2023, 2:38 p.m. UTC | #4
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
diff mbox series

Patch

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;
 	}
 }