diff options
author | Andrew Davis <afd@ti.com> | 2024-08-02 13:22:55 -0500 |
---|---|---|
committer | Mathieu Poirier <mathieu.poirier@linaro.org> | 2024-08-13 09:41:51 -0600 |
commit | 209dd85aa4417480fb8d3c195893b116f9b87acb (patch) | |
tree | 663a0591a850f5ccba836427b77c4fdda18933f0 /drivers/remoteproc | |
parent | d32e71660056455ff0af73e10d239d4043d9c1a5 (diff) | |
download | lwn-209dd85aa4417480fb8d3c195893b116f9b87acb.tar.gz lwn-209dd85aa4417480fb8d3c195893b116f9b87acb.zip |
remoteproc: keystone: 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/20240802182300.244055-2-afd@ti.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Diffstat (limited to 'drivers/remoteproc')
-rw-r--r-- | drivers/remoteproc/keystone_remoteproc.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/remoteproc/keystone_remoteproc.c b/drivers/remoteproc/keystone_remoteproc.c index 81b179e269a1..8f0f7a4cfef2 100644 --- a/drivers/remoteproc/keystone_remoteproc.c +++ b/drivers/remoteproc/keystone_remoteproc.c @@ -384,8 +384,8 @@ static int keystone_rproc_probe(struct platform_device *pdev) if (!fw_name) return -ENOMEM; - rproc = rproc_alloc(dev, dev_name(dev), &keystone_rproc_ops, fw_name, - sizeof(*ksproc)); + rproc = devm_rproc_alloc(dev, dev_name(dev), &keystone_rproc_ops, + fw_name, sizeof(*ksproc)); if (!rproc) return -ENOMEM; @@ -396,13 +396,11 @@ static int keystone_rproc_probe(struct platform_device *pdev) ret = keystone_rproc_of_get_dev_syscon(pdev, ksproc); if (ret) - goto free_rproc; + return ret; ksproc->reset = devm_reset_control_get_exclusive(dev, NULL); - if (IS_ERR(ksproc->reset)) { - ret = PTR_ERR(ksproc->reset); - goto free_rproc; - } + if (IS_ERR(ksproc->reset)) + return PTR_ERR(ksproc->reset); /* enable clock for accessing DSP internal memories */ pm_runtime_enable(dev); @@ -467,8 +465,6 @@ disable_clk: pm_runtime_put_sync(dev); disable_rpm: pm_runtime_disable(dev); -free_rproc: - rproc_free(rproc); return ret; } @@ -480,7 +476,6 @@ static void keystone_rproc_remove(struct platform_device *pdev) gpiod_put(ksproc->kick_gpio); pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); - rproc_free(ksproc->rproc); of_reserved_mem_device_release(&pdev->dev); } |