Commit 6575a9c6 authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Simon Horman

drivers: sh: clk: Avoid crashes when passing NULL clocks

Several clock API functions handle NULL clocks when the Common Clock
Framework is used, while their legacy SH counterparts don't, and would
just crash when a NULL clock is passed.

Add NULL checks to clk_get_rate(), clk_set_rate(), clk_get_parent(), and
clk_round_rate(), to avoid different behavior in drivers shared between
legacy and CCF-based platforms.
Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
parent 90069ad1
...@@ -469,6 +469,9 @@ void clk_enable_init_clocks(void) ...@@ -469,6 +469,9 @@ void clk_enable_init_clocks(void)
unsigned long clk_get_rate(struct clk *clk) unsigned long clk_get_rate(struct clk *clk)
{ {
if (!clk)
return 0;
return clk->rate; return clk->rate;
} }
EXPORT_SYMBOL_GPL(clk_get_rate); EXPORT_SYMBOL_GPL(clk_get_rate);
...@@ -478,6 +481,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate) ...@@ -478,6 +481,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
int ret = -EOPNOTSUPP; int ret = -EOPNOTSUPP;
unsigned long flags; unsigned long flags;
if (!clk)
return 0;
spin_lock_irqsave(&clock_lock, flags); spin_lock_irqsave(&clock_lock, flags);
if (likely(clk->ops && clk->ops->set_rate)) { if (likely(clk->ops && clk->ops->set_rate)) {
...@@ -535,12 +541,18 @@ EXPORT_SYMBOL_GPL(clk_set_parent); ...@@ -535,12 +541,18 @@ EXPORT_SYMBOL_GPL(clk_set_parent);
struct clk *clk_get_parent(struct clk *clk) struct clk *clk_get_parent(struct clk *clk)
{ {
if (!clk)
return NULL;
return clk->parent; return clk->parent;
} }
EXPORT_SYMBOL_GPL(clk_get_parent); EXPORT_SYMBOL_GPL(clk_get_parent);
long clk_round_rate(struct clk *clk, unsigned long rate) long clk_round_rate(struct clk *clk, unsigned long rate)
{ {
if (!clk)
return 0;
if (likely(clk->ops && clk->ops->round_rate)) { if (likely(clk->ops && clk->ops->round_rate)) {
unsigned long flags, rounded; unsigned long flags, rounded;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment