reset: Align logic and flow in managed helpers
authorGeert Uytterhoeven <geert+renesas@glider.be>
Wed, 20 Nov 2019 14:59:27 +0000 (15:59 +0100)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Thu, 2 Jan 2020 11:25:05 +0000 (12:25 +0100)
__devm_reset_control_get() and devm_reset_control_array_get() are very
similar, but they do not look similar, due to inverted logic.
Make them more similar, following the "bail out early" paradigm.

Adjust the logic and flow in devm_reset_controller_register() to match
the two other functions.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/reset/core.c

index 7597c70e04d5b42b54d18a8c7de022bc7586b99a..01c0c7aa835cbfe2fbc95c2b858a2ba40f8b5246 100644 (file)
@@ -150,13 +150,14 @@ int devm_reset_controller_register(struct device *dev,
                return -ENOMEM;
 
        ret = reset_controller_register(rcdev);
-       if (!ret) {
-               *rcdevp = rcdev;
-               devres_add(dev, rcdevp);
-       } else {
+       if (ret) {
                devres_free(rcdevp);
+               return ret;
        }
 
+       *rcdevp = rcdev;
+       devres_add(dev, rcdevp);
+
        return ret;
 }
 EXPORT_SYMBOL_GPL(devm_reset_controller_register);
@@ -787,13 +788,14 @@ struct reset_control *__devm_reset_control_get(struct device *dev,
                return ERR_PTR(-ENOMEM);
 
        rstc = __reset_control_get(dev, id, index, shared, optional, acquired);
-       if (!IS_ERR_OR_NULL(rstc)) {
-               *ptr = rstc;
-               devres_add(dev, ptr);
-       } else {
+       if (IS_ERR_OR_NULL(rstc)) {
                devres_free(ptr);
+               return rstc;
        }
 
+       *ptr = rstc;
+       devres_add(dev, ptr);
+
        return rstc;
 }
 EXPORT_SYMBOL_GPL(__devm_reset_control_get);
@@ -919,22 +921,21 @@ EXPORT_SYMBOL_GPL(of_reset_control_array_get);
 struct reset_control *
 devm_reset_control_array_get(struct device *dev, bool shared, bool optional)
 {
-       struct reset_control **devres;
-       struct reset_control *rstc;
+       struct reset_control **ptr, *rstc;
 
-       devres = devres_alloc(devm_reset_control_release, sizeof(*devres),
-                             GFP_KERNEL);
-       if (!devres)
+       ptr = devres_alloc(devm_reset_control_release, sizeof(*ptr),
+                          GFP_KERNEL);
+       if (!ptr)
                return ERR_PTR(-ENOMEM);
 
        rstc = of_reset_control_array_get(dev->of_node, shared, optional, true);
        if (IS_ERR_OR_NULL(rstc)) {
-               devres_free(devres);
+               devres_free(ptr);
                return rstc;
        }
 
-       *devres = rstc;
-       devres_add(dev, devres);
+       *ptr = rstc;
+       devres_add(dev, ptr);
 
        return rstc;
 }