Re: [PATCH] tracing/synthetic: use union instead of casts

From: Sven Schnelle
Date: Wed Aug 09 2023 - 03:17:13 EST


Steven Rostedt <rostedt@xxxxxxxxxxx> writes:

> On Tue, 08 Aug 2023 19:33:06 +0200
> Sven Schnelle <svens@xxxxxxxxxxxxx> wrote:
>
>> Steven Rostedt <rostedt@xxxxxxxxxxx> writes:
>>
>> > The "dynamic" I was using wasn't about the fields were dynamic (union), but
>> > because the field the offset/len combo represents is of dynamic size. It's
>> > used all over the trace_events code.
>> >
>> > I would have in include/linux/trace_events.h (right above struct trace_entry):
>> >
>> > /* 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;
>> > #else
>> > u16 len;
>> > u16 offset;
>> > #endif
>> > };
>> >
>> > And then it kernel/trace/trace.h:
>> >
>> > union trace_synthetic_field {
>> > u8 as_u8;
>> > u16 as_u16;
>> > u32 as_u32;
>> > u64 as_u64;
>> > struct trace_dynamic_info as_dynamic;
>> > };
>>
>> Ok.
>>
>> > I could work on the part of the trace_dynamic_info if you want.
>>
>> Whatever you prefer. Should i update my patch and send it again, or do
>> you want to adjust it?
>>
>
> How quickly do you need it. I can hopefully start working on it this week.

I would like to have the bugfix in as soon as possible, as this is
triggering a lot of KASAN warnings in our CI (besides breaking the
synthetic events on our platform). I sent a v2 of my patch, so we
apply that. The rest of the changes are not urgent.

Thanks
Sven