remoteproc: st: Use devm_rproc_alloc() helper
authorAndrew Davis <afd@ti.com>
Tue, 23 Jan 2024 18:46:31 +0000 (12:46 -0600)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Fri, 2 Feb 2024 18:36:27 +0000 (11:36 -0700)
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/20240123184632.725054-8-afd@ti.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
drivers/remoteproc/st_remoteproc.c

index cb163766c56d526333dabbdc5a42b09a1fe65546..1340be9d0110175c41318208ece611d882da2399 100644 (file)
@@ -347,23 +347,21 @@ static int st_rproc_probe(struct platform_device *pdev)
        int enabled;
        int ret, i;
 
-       rproc = rproc_alloc(dev, np->name, &st_rproc_ops, NULL, sizeof(*ddata));
+       rproc = devm_rproc_alloc(dev, np->name, &st_rproc_ops, NULL, sizeof(*ddata));
        if (!rproc)
                return -ENOMEM;
 
        rproc->has_iommu = false;
        ddata = rproc->priv;
        ddata->config = (struct st_rproc_config *)device_get_match_data(dev);
-       if (!ddata->config) {
-               ret = -ENODEV;
-               goto free_rproc;
-       }
+       if (!ddata->config)
+               return -ENODEV;
 
        platform_set_drvdata(pdev, rproc);
 
        ret = st_rproc_parse_dt(pdev);
        if (ret)
-               goto free_rproc;
+               return ret;
 
        enabled = st_rproc_state(pdev);
        if (enabled < 0) {
@@ -439,8 +437,7 @@ free_mbox:
                mbox_free_channel(ddata->mbox_chan[i]);
 free_clk:
        clk_unprepare(ddata->clk);
-free_rproc:
-       rproc_free(rproc);
+
        return ret;
 }
 
@@ -456,8 +453,6 @@ static void st_rproc_remove(struct platform_device *pdev)
 
        for (i = 0; i < ST_RPROC_MAX_VRING * MBOX_MAX; i++)
                mbox_free_channel(ddata->mbox_chan[i]);
-
-       rproc_free(rproc);
 }
 
 static struct platform_driver st_rproc_driver = {