浏览代码

regulator: max8952 - fix max8952_pmic_probe error path

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
Axel Lin 14 年之前
父节点
当前提交
da05738e94
共有 1 个文件被更改,包括 8 次插入2 次删除
  1. 8 2
      drivers/regulator/max8952.c

+ 8 - 2
drivers/regulator/max8952.c

@@ -212,9 +212,11 @@ static int __devinit max8952_pmic_probe(struct i2c_client *client,
 	max8952->rdev = regulator_register(&regulator, max8952->dev,
 	max8952->rdev = regulator_register(&regulator, max8952->dev,
 			&pdata->reg_data, max8952);
 			&pdata->reg_data, max8952);
 
 
-	ret = IS_ERR(max8952->rdev);
-	if (ret)
+	if (IS_ERR(max8952->rdev)) {
+		ret = PTR_ERR(max8952->rdev);
 		dev_err(max8952->dev, "regulator init failed (%d)\n", ret);
 		dev_err(max8952->dev, "regulator init failed (%d)\n", ret);
+		goto err_reg;
+	}
 
 
 	max8952->en = !!(pdata->reg_data.constraints.boot_on);
 	max8952->en = !!(pdata->reg_data.constraints.boot_on);
 	max8952->vid0 = (pdata->default_mode % 2) == 1;
 	max8952->vid0 = (pdata->default_mode % 2) == 1;
@@ -309,6 +311,10 @@ static int __devinit max8952_pmic_probe(struct i2c_client *client,
 
 
 	i2c_set_clientdata(client, max8952);
 	i2c_set_clientdata(client, max8952);
 
 
+	return 0;
+
+err_reg:
+	kfree(max8952);
 	return ret;
 	return ret;
 }
 }