On Sat, Mar 15, 2025 at 10:24:14AM +0100, Christian Marangi wrote: > It's currently possible to make the bootloader crash on calling > clk_set_rate caused by the loop in clk_clean_rate_cache. > > The loop assume that every child of the clock node are also clock > device but this is not always the case. For example it's common for a > clock to bind to a reset device or also expose a syscon if the clock > register map is also used to apply special configuration. > > In such case, on accessing a device as a clock, the bootloader crash. To > correctly handle this, check if the child device is actually a clock and > ignore otherwise. > > Fixes: 6b7fd3128f71 ("clk: fix set_rate to clean up cached rates for the > hierarchy") > Signed-off-by: Christian Marangi <ansuels...@gmail.com> > --- > RESEND as there was a problem with email To: > > drivers/clk/clk-uclass.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c > index 353ae476068..8f3309d9530 100644 > --- a/drivers/clk/clk-uclass.c > +++ b/drivers/clk/clk-uclass.c > @@ -554,6 +554,9 @@ static void clk_clean_rate_cache(struct clk *clk) > clk->rate = 0; > > list_for_each_entry(child_dev, &clk->dev->child_head, sibling_node) { > + if (device_get_uclass_id(child_dev) != UCLASS_CLK) > + continue; > + > clkp = dev_get_clk_ptr(child_dev); > clk_clean_rate_cache(clkp); > } > -- > 2.48.1 >
News for this trivial patch? -- Ansuel