]> Pileus Git - ~andy/linux/blobdiff - drivers/regulator/mc13783-regulator.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
[~andy/linux] / drivers / regulator / mc13783-regulator.c
index 8479082e1aeaaafa1d0ca5780101855c00863df7..8e9b90ad88ae35cea58ef488c41ba1383da918e2 100644 (file)
@@ -344,7 +344,7 @@ static int __devinit mc13783_regulator_probe(struct platform_device *pdev)
 
        dev_dbg(&pdev->dev, "%s id %d\n", __func__, pdev->id);
 
-       priv = kzalloc(sizeof(*priv) +
+       priv = devm_kzalloc(&pdev->dev, sizeof(*priv) +
                        pdata->num_regulators * sizeof(priv->regulators[0]),
                        GFP_KERNEL);
        if (!priv)
@@ -357,7 +357,7 @@ static int __devinit mc13783_regulator_probe(struct platform_device *pdev)
                init_data = &pdata->regulators[i];
                priv->regulators[i] = regulator_register(
                                &mc13783_regulators[init_data->id].desc,
-                               &pdev->dev, init_data->init_data, priv);
+                               &pdev->dev, init_data->init_data, priv, NULL);
 
                if (IS_ERR(priv->regulators[i])) {
                        dev_err(&pdev->dev, "failed to register regulator %s\n",
@@ -374,8 +374,6 @@ err:
        while (--i >= 0)
                regulator_unregister(priv->regulators[i]);
 
-       kfree(priv);
-
        return ret;
 }
 
@@ -391,7 +389,6 @@ static int __devexit mc13783_regulator_remove(struct platform_device *pdev)
        for (i = 0; i < pdata->num_regulators; i++)
                regulator_unregister(priv->regulators[i]);
 
-       kfree(priv);
        return 0;
 }