diff options
-rw-r--r-- | drivers/regulator/userspace-consumer.c | 20 |
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) | |||
154 | err_enable: | 156 | err_enable: |
155 | sysfs_remove_group(&pdev->dev.kobj, &attr_group); | 157 | sysfs_remove_group(&pdev->dev.kobj, &attr_group); |
156 | 158 | ||
157 | err_create_attrs: | ||
158 | regulator_bulk_free(drvdata->num_supplies, drvdata->supplies); | ||
159 | |||
160 | err_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 | ||