Re: linux-next: build failure after merge of the kspp tree

From: Masami Hiramatsu
Date: Tue Jan 25 2022 - 19:35:45 EST


Hi Steve,
(Ccing Beau)

On Tue, 25 Jan 2022 17:21:14 -0500
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> On Tue, 25 Jan 2022 14:07:14 -0800
> Kees Cook <keescook@xxxxxxxxxxxx> wrote:
>
> > > The tstruct is the TP_STRUCT__entry() and for each __rel_dynamic_array() or
> > > __dynamic_array(), the __data_size gets updated and saved into the
> > > __data_offsets that holds where each item is.
> > >
> > > The rel versions sets the offset from its location to the data, where as
> > > the non rel versions sets the offset from the beginning of the event to the
> > > data.
> >
> > Could this just be
> >
> > #define __get_rel_dynamic_array(field) \
> > ((void *)(&__entry->data[__entry->__rel_loc_##field & 0xffff])
> >
> > ?
>
> This is currently user space defined. But since the only user of the rel_*
> version hasn't been upstreamed yet, we could change it. But it also
> requires changing libtraceevent as it depends on this code too.

I think Kees' idea seems better. If you and Beau are good, I will update
the macros for __rel_loc. (This requires to change some user-space
application which Beau is making too.)

>
> I'm surprised that it doesn't break with the __get_dynamic_array()
> versions, or is that because it's based off of __entry?

I think so. Gcc seems to check the size of the data structure where the
original base address points.

Thank you,

>
> -- Steve


--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>