On 30/05/2019 9.55, Tony Lindgren wrote: > If we do a clk_get() for a clock that does not exists, we have > _ti_omap4_clkctrl_xlate() return uninitialized data if no match > is found. This can be seen in some cases with SLAB_DEBUG enabled: > > Unable to handle kernel paging request at virtual address 5a5a5a5a > ... > clk_hw_create_clk.part.33 > sysc_notifier_call > notifier_call_chain > blocking_notifier_call_chain > device_add > > Let's fix this by setting a found flag only when we find a match. Tested-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx> > > Cc: Peter Ujfalusi <peter.ujfalusi@xxxxxx> > Cc: Tomi Valkeinen <tomi.valkeinen@xxxxxx> > Reported-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx> > Fixes: 88a172526c32 ("clk: ti: add support for clkctrl clocks") > Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx> > --- > drivers/clk/ti/clkctrl.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c > --- a/drivers/clk/ti/clkctrl.c > +++ b/drivers/clk/ti/clkctrl.c > @@ -229,6 +229,7 @@ static struct clk_hw *_ti_omap4_clkctrl_xlate(struct of_phandle_args *clkspec, > { > struct omap_clkctrl_provider *provider = data; > struct omap_clkctrl_clk *entry; > + bool found = false; > > if (clkspec->args_count != 2) > return ERR_PTR(-EINVAL); > @@ -238,11 +239,13 @@ static struct clk_hw *_ti_omap4_clkctrl_xlate(struct of_phandle_args *clkspec, > > list_for_each_entry(entry, &provider->clocks, node) { > if (entry->reg_offset == clkspec->args[0] && > - entry->bit_offset == clkspec->args[1]) > + entry->bit_offset == clkspec->args[1]) { > + found = true; > break; > + } > } > > - if (!entry) > + if (!found) > return ERR_PTR(-EINVAL); > > return entry->clk; > - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki