Message ID | 20240808074127.2688131-2-b-padhi@ti.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | Defer TI's Remoteproc's Probe until Mailbox is Probed | expand |
On 8/8/24 2:41 AM, Beleswar Padhi wrote: > 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: Beleswar Padhi <b-padhi@ti.com> > --- LGTM Reviewed-by: Andrew Davis <afd@ti.com> > drivers/remoteproc/ti_k3_r5_remoteproc.c | 16 +++++----------- > 1 file changed, 5 insertions(+), 11 deletions(-) > > diff --git a/drivers/remoteproc/ti_k3_r5_remoteproc.c b/drivers/remoteproc/ti_k3_r5_remoteproc.c > index 39a47540c590..57067308b3c0 100644 > --- a/drivers/remoteproc/ti_k3_r5_remoteproc.c > +++ b/drivers/remoteproc/ti_k3_r5_remoteproc.c > @@ -1259,8 +1259,8 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev) > goto out; > } > > - rproc = rproc_alloc(cdev, dev_name(cdev), &k3_r5_rproc_ops, > - fw_name, sizeof(*kproc)); > + rproc = devm_rproc_alloc(cdev, dev_name(cdev), &k3_r5_rproc_ops, > + fw_name, sizeof(*kproc)); > if (!rproc) { > ret = -ENOMEM; > goto out; > @@ -1280,7 +1280,7 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev) > > ret = k3_r5_rproc_configure_mode(kproc); > if (ret < 0) > - goto err_config; > + goto out; > if (ret) > goto init_rmem; > > @@ -1288,7 +1288,7 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev) > if (ret) { > dev_err(dev, "initial configure failed, ret = %d\n", > ret); > - goto err_config; > + goto out; > } > > init_rmem: > @@ -1298,7 +1298,7 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev) > if (ret) { > dev_err(dev, "reserved memory init failed, ret = %d\n", > ret); > - goto err_config; > + goto out; > } > > ret = rproc_add(rproc); > @@ -1351,9 +1351,6 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev) > rproc_del(rproc); > err_add: > k3_r5_reserved_mem_exit(kproc); > -err_config: > - rproc_free(rproc); > - core->rproc = NULL; > out: > /* undo core0 upon any failures on core1 in split-mode */ > if (cluster->mode == CLUSTER_MODE_SPLIT && core == core1) { > @@ -1398,9 +1395,6 @@ static void k3_r5_cluster_rproc_exit(void *data) > rproc_del(rproc); > > k3_r5_reserved_mem_exit(kproc); > - > - rproc_free(rproc); > - core->rproc = NULL; > } > } >
diff --git a/drivers/remoteproc/ti_k3_r5_remoteproc.c b/drivers/remoteproc/ti_k3_r5_remoteproc.c index 39a47540c590..57067308b3c0 100644 --- a/drivers/remoteproc/ti_k3_r5_remoteproc.c +++ b/drivers/remoteproc/ti_k3_r5_remoteproc.c @@ -1259,8 +1259,8 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev) goto out; } - rproc = rproc_alloc(cdev, dev_name(cdev), &k3_r5_rproc_ops, - fw_name, sizeof(*kproc)); + rproc = devm_rproc_alloc(cdev, dev_name(cdev), &k3_r5_rproc_ops, + fw_name, sizeof(*kproc)); if (!rproc) { ret = -ENOMEM; goto out; @@ -1280,7 +1280,7 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev) ret = k3_r5_rproc_configure_mode(kproc); if (ret < 0) - goto err_config; + goto out; if (ret) goto init_rmem; @@ -1288,7 +1288,7 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev) if (ret) { dev_err(dev, "initial configure failed, ret = %d\n", ret); - goto err_config; + goto out; } init_rmem: @@ -1298,7 +1298,7 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev) if (ret) { dev_err(dev, "reserved memory init failed, ret = %d\n", ret); - goto err_config; + goto out; } ret = rproc_add(rproc); @@ -1351,9 +1351,6 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev) rproc_del(rproc); err_add: k3_r5_reserved_mem_exit(kproc); -err_config: - rproc_free(rproc); - core->rproc = NULL; out: /* undo core0 upon any failures on core1 in split-mode */ if (cluster->mode == CLUSTER_MODE_SPLIT && core == core1) { @@ -1398,9 +1395,6 @@ static void k3_r5_cluster_rproc_exit(void *data) rproc_del(rproc); k3_r5_reserved_mem_exit(kproc); - - rproc_free(rproc); - core->rproc = NULL; } }
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: Beleswar Padhi <b-padhi@ti.com> --- drivers/remoteproc/ti_k3_r5_remoteproc.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-)