From: Julia Lawall <[email protected]>

devm_kfree and devm_iounmap should not have to be explicitly used.

The semantic patch that fixes one of these problems is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@
expression x,d;
@@

x = devm_kzalloc(...)
...
?-devm_kfree(d,x);
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
 drivers/thermal/rcar_thermal.c |   16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c
index 2496b4f..9edbe04 100644
--- a/drivers/thermal/rcar_thermal.c
+++ b/drivers/thermal/rcar_thermal.c
@@ -206,16 +206,14 @@ static int rcar_thermal_probe(struct platform_device 
*pdev)
                                          res->start, resource_size(res));
        if (!priv->base) {
                dev_err(&pdev->dev, "Unable to ioremap thermal register\n");
-               ret = -ENOMEM;
-               goto error_free_priv;
+               return -ENOMEM;
        }
 
        zone = thermal_zone_device_register("rcar_thermal", 0, priv,
                                            &rcar_thermal_zone_ops, 0, 0, 0, 0);
        if (IS_ERR(zone)) {
                dev_err(&pdev->dev, "thermal zone device is NULL\n");
-               ret = PTR_ERR(zone);
-               goto error_iounmap;
+               return PTR_ERR(zone);
        }
 
        platform_set_drvdata(pdev, zone);
@@ -223,13 +221,6 @@ static int rcar_thermal_probe(struct platform_device *pdev)
        dev_info(&pdev->dev, "proved\n");
 
        return 0;
-
-error_iounmap:
-       devm_iounmap(&pdev->dev, priv->base);
-error_free_priv:
-       devm_kfree(&pdev->dev, priv);
-
-       return ret;
 }
 
 static int rcar_thermal_remove(struct platform_device *pdev)
@@ -240,9 +231,6 @@ static int rcar_thermal_remove(struct platform_device *pdev)
        thermal_zone_device_unregister(zone);
        platform_set_drvdata(pdev, NULL);
 
-       devm_iounmap(&pdev->dev, priv->base);
-       devm_kfree(&pdev->dev, priv);
-
        return 0;
 }
 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to