clk: handle NULL struct clk gracefully
authorMike Turquette <mturquette@linaro.org>
Thu, 22 Aug 2013 06:58:09 +0000 (23:58 -0700)
committerMike Turquette <mturquette@linaro.org>
Thu, 22 Aug 2013 06:58:09 +0000 (23:58 -0700)
At some point changes to clk_set_rate and clk_set_parent introduced a
bug whereby NULL struct clk pointers were treated as an error. This is
in violation of the API in include/linux/clk.h. Reintroduce graceful
handling of NULL clk's by bailing from clk_set_rate and clk_set_parent
with return codes of zero.

Signed-off-by: Mike Turquette <mturquette@linaro.org>
drivers/clk/clk.c

index bc020372106ba939191f3c4e0130e81df650b3bf..7c4376289865ee587f6ac3ea3d2b1866a6b10f52 100644 (file)
@@ -1428,6 +1428,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
        struct clk *top, *fail_clk;
        int ret = 0;
 
+       if (!clk)
+               return 0;
+
        /* prevent racing with updates to the clock topology */
        clk_prepare_lock();
 
@@ -1567,7 +1570,10 @@ int clk_set_parent(struct clk *clk, struct clk *parent)
        u8 p_index = 0;
        unsigned long p_rate = 0;
 
-       if (!clk || !clk->ops)
+       if (!clk)
+               return 0;
+
+       if (!clk->ops)
                return -EINVAL;
 
        /* verify ops for for multi-parent clks */