aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/regulator/userspace-consumer.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/drivers/regulator/userspace-consumer.c b/drivers/regulator/userspace-consumer.c
index 518667ef9a0d..a7c8deb5f28f 100644
--- a/drivers/regulator/userspace-consumer.c
+++ b/drivers/regulator/userspace-consumer.c
@@ -115,7 +115,9 @@ static int regulator_userspace_consumer_probe(struct platform_device *pdev)
115 if (!pdata) 115 if (!pdata)
116 return -EINVAL; 116 return -EINVAL;
117 117
118 drvdata = kzalloc(sizeof(struct userspace_consumer_data), GFP_KERNEL); 118 drvdata = devm_kzalloc(&pdev->dev,
119 sizeof(struct userspace_consumer_data),
120 GFP_KERNEL);
119 if (drvdata == NULL) 121 if (drvdata == NULL)
120 return -ENOMEM; 122 return -ENOMEM;
121 123
@@ -125,16 +127,16 @@ static int regulator_userspace_consumer_probe(struct platform_device *pdev)
125 127
126 mutex_init(&drvdata->lock); 128 mutex_init(&drvdata->lock);
127 129
128 ret = regulator_bulk_get(&pdev->dev, drvdata->num_supplies, 130 ret = devm_regulator_bulk_get(&pdev->dev, drvdata->num_supplies,
129 drvdata->supplies); 131 drvdata->supplies);
130 if (ret) { 132 if (ret) {
131 dev_err(&pdev->dev, "Failed to get supplies: %d\n", ret); 133 dev_err(&pdev->dev, "Failed to get supplies: %d\n", ret);
132 goto err_alloc_supplies; 134 return ret;
133 } 135 }
134 136
135 ret = sysfs_create_group(&pdev->dev.kobj, &attr_group); 137 ret = sysfs_create_group(&pdev->dev.kobj, &attr_group);
136 if (ret != 0) 138 if (ret != 0)
137 goto err_create_attrs; 139 return ret;
138 140
139 if (pdata->init_on) { 141 if (pdata->init_on) {
140 ret = regulator_bulk_enable(drvdata->num_supplies, 142 ret = regulator_bulk_enable(drvdata->num_supplies,
@@ -154,11 +156,6 @@ static int regulator_userspace_consumer_probe(struct platform_device *pdev)
154err_enable: 156err_enable:
155 sysfs_remove_group(&pdev->dev.kobj, &attr_group); 157 sysfs_remove_group(&pdev->dev.kobj, &attr_group);
156 158
157err_create_attrs:
158 regulator_bulk_free(drvdata->num_supplies, drvdata->supplies);
159
160err_alloc_supplies:
161 kfree(drvdata);
162 return ret; 159 return ret;
163} 160}
164 161
@@ -171,9 +168,6 @@ static int regulator_userspace_consumer_remove(struct platform_device *pdev)
171 if (data->enabled) 168 if (data->enabled)
172 regulator_bulk_disable(data->num_supplies, data->supplies); 169 regulator_bulk_disable(data->num_supplies, data->supplies);
173 170
174 regulator_bulk_free(data->num_supplies, data->supplies);
175 kfree(data);
176
177 return 0; 171 return 0;
178} 172}
179 173