Re: question about clk_hw_register_fixed_factor

From: Julia Lawall
Date: Tue Sep 20 2016 - 13:33:04 EST




On Tue, 20 Sep 2016, Stephen Boyd wrote:

> On 09/20, Julia Lawall wrote:
> > Hello,
> >
> > The function clk_hw_register_fixed_factor from
> > drivers/clk/clk-fixed-factor.c contains:
> >
> > struct clk_init_data init;
> > ...
> > fix->hw.init = &init;
> > ...
> > hw = &fix->hw;
> > ...
> > return hw;
> >
> > It looks like hw would then contain a dangling pointer, to init. Should
> > this be nulled out, or does it not matter because it is certain that no
> > one will look at it anyway? Or did I miss a null assignment elsewhere?
> >
>
> Yes this is a common pattern in clk drivers. The init structure
> is not used after clk_register() (or its variants) is called, so
> there will typically be a dangling pointer in clk_hw to the
> clk_init_data structure. Sometimes that structure is allocated on
> the stack, which leads to other problems like people forgetting
> to initialize all the members. Usually they forgot to set flags
> to something and then clk framework does very odd things. We
> could null out the init pointer if we really cared, but so far
> this hasn't been a problem.

OK, thanks for the clarification.

julia