clk: fix crash on clk_set_rate clean rate cache
authorChristian Marangi <ansuelsmth@gmail.com>
Sat, 15 Mar 2025 09:24:14 +0000 (10:24 +0100)
committerTom Rini <trini@konsulko.com>
Wed, 30 Apr 2025 13:50:18 +0000 (07:50 -0600)
commitaa96cda0a58f4d181b81a897b0b9fea3d9729478
tree3edbea8e1803c2810941bf675fadbb131a5ca3ca
parenta6da395b5d68ad0e644e0a70665274dc60ec2056
clk: fix crash on clk_set_rate clean rate cache

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 <ansuelsmth@gmail.com>
Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com>
drivers/clk/clk-uclass.c