Skip to content

Commit 0c1b56d

Browse files
mripardbebarino
authored andcommitted
clk: Fix clk_hw_get_clk() when dev is NULL
Any registered clk_core structure can have a NULL pointer in its dev field. While never actually documented, this is evidenced by the wide usage of clk_register and clk_hw_register with a NULL device pointer, and the fact that the core of_clk_hw_register() function also passes a NULL device pointer. A call to clk_hw_get_clk() on a clk_hw struct whose clk_core is in that case will result in a NULL pointer derefence when it calls dev_name() on that NULL device pointer. Add a test for this case and use NULL as the dev_id if the device pointer is NULL. Fixes: 30d6f8c ("clk: add api to get clk consumer from clk_hw") Signed-off-by: Maxime Ripard <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Stephen Boyd <[email protected]>
1 parent a992acb commit 0c1b56d

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/clk/clk.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3773,8 +3773,9 @@ struct clk *clk_hw_create_clk(struct device *dev, struct clk_hw *hw,
37733773
struct clk *clk_hw_get_clk(struct clk_hw *hw, const char *con_id)
37743774
{
37753775
struct device *dev = hw->core->dev;
3776+
const char *name = dev ? dev_name(dev) : NULL;
37763777

3777-
return clk_hw_create_clk(dev, hw, dev_name(dev), con_id);
3778+
return clk_hw_create_clk(dev, hw, name, con_id);
37783779
}
37793780
EXPORT_SYMBOL(clk_hw_get_clk);
37803781

0 commit comments

Comments
 (0)