Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide
[cascardo/linux.git] / drivers / regulator / lp3972.c
index 61e4cf9..5730240 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;
 }