On Mon, Sep 09, 2019 at 03:15:55AM -0700, Dmitry Torokhov wrote:
> On Mon, Sep 09, 2019 at 12:55:05PM +0300, Andy Shevchenko wrote:
> > On Mon, Sep 09, 2019 at 01:15:47AM -0700, Dmitry Torokhov wrote:
> > > Instead of explicitly setting values of integer types when copying 
> > > property
> > > entries lets just copy entire value union when processing non-array 
> > > values.
> > > 
> > > When handling array values assign the pointer there using the newly 
> > > introduced
> > > "raw" pointer union member. This allows us to remove 
> > > property_set_pointer().
> > 
> > Is this reincarnation of 318a19718261?
> > Have you read 63dcc7090137?
> 
> Okay, I think if I squash this and the followup patch to
> property_get_data() then we'll only go through the "raw" pointer to get
> to the non-inline data and therefore we will not have the union aliasing
> issue.
> 
> The in-line values never change their type when storing/accessing.

It might work, though it prevents to do type checking at compile time. So,
basically something like

        struct obscure_things {
                u8 *prop_array_val;
                bla bla bla
        };

        struct property_entry entry;
        struct obscure_things things;
        ...
        entry.pointer.raw = &things;

which shouldn't be possible.

I dunno what others think about your proposal.

-- 
With Best Regards,
Andy Shevchenko


Reply via email to