Skip to content

Commit 9b84eec

Browse files
glneomathieupoirier
authored andcommitted
remoteproc: wkup_m3: Use devm_rproc_alloc() helper
Use the device lifecycle managed allocation function. This helps prevent mistakes like freeing out of order in cleanup functions and forgetting to free on error paths. Signed-off-by: Andrew Davis <afd@ti.com> Link: https://lore.kernel.org/r/20250814153940.670564-3-afd@ti.com Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
1 parent 642f8c0 commit 9b84eec

1 file changed

Lines changed: 8 additions & 20 deletions

File tree

drivers/remoteproc/wkup_m3_rproc.c

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,8 @@ static int wkup_m3_rproc_probe(struct platform_device *pdev)
165165
if (ret)
166166
return dev_err_probe(dev, ret, "failed to add disable pm devm action\n");
167167

168-
rproc = rproc_alloc(dev, "wkup_m3", &wkup_m3_rproc_ops,
169-
fw_name, sizeof(*wkupm3));
168+
rproc = devm_rproc_alloc(dev, "wkup_m3", &wkup_m3_rproc_ops,
169+
fw_name, sizeof(*wkupm3));
170170
if (!rproc)
171171
return -ENOMEM;
172172

@@ -183,22 +183,17 @@ static int wkup_m3_rproc_probe(struct platform_device *pdev)
183183
if (!wkupm3->rsts) {
184184
if (!(pdata && pdata->deassert_reset && pdata->assert_reset &&
185185
pdata->reset_name)) {
186-
dev_err(dev, "Platform data missing!\n");
187-
ret = -ENODEV;
188-
goto err_put_rproc;
186+
return dev_err_probe(dev, -ENODEV, "Platform data missing!\n");
189187
}
190188
}
191189

192190
for (i = 0; i < ARRAY_SIZE(mem_names); i++) {
193191
res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
194192
mem_names[i]);
195193
wkupm3->mem[i].cpu_addr = devm_ioremap_resource(dev, res);
196-
if (IS_ERR(wkupm3->mem[i].cpu_addr)) {
197-
dev_err(&pdev->dev, "devm_ioremap_resource failed for resource %d\n",
198-
i);
199-
ret = PTR_ERR(wkupm3->mem[i].cpu_addr);
200-
goto err_put_rproc;
201-
}
194+
if (IS_ERR(wkupm3->mem[i].cpu_addr))
195+
return dev_err_probe(dev, PTR_ERR(wkupm3->mem[i].cpu_addr),
196+
"devm_ioremap_resource failed for resource %d\n", i);
202197
wkupm3->mem[i].bus_addr = res->start;
203198
wkupm3->mem[i].size = resource_size(res);
204199
addrp = of_get_address(dev->of_node, i, &size, NULL);
@@ -216,24 +211,17 @@ static int wkup_m3_rproc_probe(struct platform_device *pdev)
216211
dev_set_drvdata(dev, rproc);
217212

218213
ret = rproc_add(rproc);
219-
if (ret) {
220-
dev_err(dev, "rproc_add failed\n");
221-
goto err_put_rproc;
222-
}
214+
if (ret)
215+
return dev_err_probe(dev, ret, "rproc_add failed\n");
223216

224217
return 0;
225-
226-
err_put_rproc:
227-
rproc_free(rproc);
228-
return ret;
229218
}
230219

231220
static void wkup_m3_rproc_remove(struct platform_device *pdev)
232221
{
233222
struct rproc *rproc = platform_get_drvdata(pdev);
234223

235224
rproc_del(rproc);
236-
rproc_free(rproc);
237225
}
238226

239227
#ifdef CONFIG_PM

0 commit comments

Comments
 (0)