regulator: lp397x: use devm_kzalloc() to make cleanup paths simpler
authorNikolay Balandin <nbalandin@dev.rtsoft.ru>
Sat, 25 May 2013 21:50:40 +0000 (14:50 -0700)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 27 May 2013 12:18:30 +0000 (08:18 -0400)
Signed-off-by: Nikolay Balandin <nbalandin@dev.rtsoft.ru>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/lp3971.c
drivers/regulator/lp3972.c

index d8af9e773310f965865f40630b8c47ebbb612f1c..3809b43816060ca0a4e71fecc024b6c7e472b09d 100644 (file)
@@ -434,7 +434,7 @@ static int lp3971_i2c_probe(struct i2c_client *i2c,
                return -ENODEV;
        }
 
-       lp3971 = kzalloc(sizeof(struct lp3971), GFP_KERNEL);
+       lp3971 = devm_kzalloc(&i2c->dev, sizeof(struct lp3971), GFP_KERNEL);
        if (lp3971 == NULL)
                return -ENOMEM;
 
@@ -449,19 +449,15 @@ static int lp3971_i2c_probe(struct i2c_client *i2c,
                ret = -ENODEV;
        if (ret < 0) {
                dev_err(&i2c->dev, "failed to detect device\n");
-               goto err_detect;
+               return ret;
        }
 
        ret = setup_regulators(lp3971, pdata);
        if (ret < 0)
-               goto err_detect;
+               return ret;
 
        i2c_set_clientdata(i2c, lp3971);
        return 0;
-
-err_detect:
-       kfree(lp3971);
-       return ret;
 }
 
 static int lp3971_i2c_remove(struct i2c_client *i2c)
@@ -473,7 +469,6 @@ static int lp3971_i2c_remove(struct i2c_client *i2c)
                regulator_unregister(lp3971->rdev[i]);
 
        kfree(lp3971->rdev);
-       kfree(lp3971);
 
        return 0;
 }
index 61e4cf9edf6e55b121beb935b405e2010d7ab8dd..573024039ca0c5751fbd5faf31ca2553d0ee91c1 100644 (file)
@@ -528,7 +528,7 @@ static int lp3972_i2c_probe(struct i2c_client *i2c,
                return -ENODEV;
        }
 
-       lp3972 = kzalloc(sizeof(struct lp3972), GFP_KERNEL);
+       lp3972 = devm_kzalloc(&i2c->dev, sizeof(struct lp3972), GFP_KERNEL);
        if (!lp3972)
                return -ENOMEM;
 
@@ -546,19 +546,15 @@ static int lp3972_i2c_probe(struct i2c_client *i2c,
        }
        if (ret < 0) {
                dev_err(&i2c->dev, "failed to detect device. ret = %d\n", ret);
-               goto err_detect;
+               return ret;
        }
 
        ret = setup_regulators(lp3972, pdata);
        if (ret < 0)
-               goto err_detect;
+               return ret;
 
        i2c_set_clientdata(i2c, lp3972);
        return 0;
-
-err_detect:
-       kfree(lp3972);
-       return ret;
 }
 
 static int lp3972_i2c_remove(struct i2c_client *i2c)
@@ -569,7 +565,6 @@ static int lp3972_i2c_remove(struct i2c_client *i2c)
        for (i = 0; i < lp3972->num_regulators; i++)
                regulator_unregister(lp3972->rdev[i]);
        kfree(lp3972->rdev);
-       kfree(lp3972);
 
        return 0;
 }