clk: qcom: common: check for failure
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>
Wed, 23 Dec 2015 12:27:20 +0000 (17:57 +0530)
committerStephen Boyd <sboyd@codeaurora.org>
Tue, 9 Feb 2016 01:06:43 +0000 (17:06 -0800)
We were not checking the return from devm_add_action() which can fail.
Start using the helper and devm_add_action_or_reset() and return
directly as we know that the cleanup has been done by this helper.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
drivers/clk/qcom/common.c

index c112ebaba70d179b1f9d99a9fc253ecf34ee6dbe..65809f1a1f2b56c2446d4fc402da9fa248fc7046 100644 (file)
@@ -213,7 +213,11 @@ int qcom_cc_really_probe(struct platform_device *pdev,
        if (ret)
                return ret;
 
-       devm_add_action(dev, qcom_cc_del_clk_provider, pdev->dev.of_node);
+       ret = devm_add_action_or_reset(dev, qcom_cc_del_clk_provider,
+                                      pdev->dev.of_node);
+
+       if (ret)
+               return ret;
 
        reset = &cc->reset;
        reset->rcdev.of_node = dev->of_node;
@@ -227,7 +231,11 @@ int qcom_cc_really_probe(struct platform_device *pdev,
        if (ret)
                return ret;
 
-       devm_add_action(dev, qcom_cc_reset_unregister, &reset->rcdev);
+       ret = devm_add_action_or_reset(dev, qcom_cc_reset_unregister,
+                                      &reset->rcdev);
+
+       if (ret)
+               return ret;
 
        if (desc->gdscs && desc->num_gdscs) {
                ret = gdsc_register(dev, desc->gdscs, desc->num_gdscs,
@@ -236,10 +244,7 @@ int qcom_cc_really_probe(struct platform_device *pdev,
                        return ret;
        }
 
-       devm_add_action(dev, qcom_cc_gdsc_unregister, dev);
-
-
-       return 0;
+       return devm_add_action_or_reset(dev, qcom_cc_gdsc_unregister, dev);
 }
 EXPORT_SYMBOL_GPL(qcom_cc_really_probe);