Re: [PATCH v2] dmaengine: amlogic: Fix missing destroy_workqueue() at error path in aml_dma_probe()
From: Frank Li
Date: Mon Oct 26 2026 - 12:54:22 EST
On Sat, Oct 24, 2026 at 11:05:13AM +0200, Christophe JAILLET wrote:
> If an error occurs after the alloc_ordered_workqueue() call, the
> corresponding memory is never released.
>
> Use the managed version instead, as already done by most functions in the
> probe and simplify the remove function accordingly.
>
> This avoids the leak.
>
> Fixes: b84b5197e344 ("dmaengine: amlogic: Add general DMA driver for A9")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx>
> ---
Reviewed-by: Frank Li <Frank.Li@xxxxxxx>
> Compile tested only.
>
> Changes in v2:
> - update the subject [Franck Li]
>
> v1: https://lore.kernel.org/lkml/93183551770e260aff993bb4cf1ce5ba8dc1e732.1792785154.git.christophe.jaillet@xxxxxxxxxx/
> ---
> drivers/dma/amlogic-dma.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/dma/amlogic-dma.c b/drivers/dma/amlogic-dma.c
> index 684121d13fca..791bd82743d3 100644
> --- a/drivers/dma/amlogic-dma.c
> +++ b/drivers/dma/amlogic-dma.c
> @@ -620,7 +620,7 @@ static int aml_dma_probe(struct platform_device *pdev)
> if (!aml_dma)
> return -ENOMEM;
>
> - aml_dma->free_wq = alloc_ordered_workqueue("aml_dma_free", 0);
> + aml_dma->free_wq = devm_alloc_ordered_workqueue(&pdev->dev, "aml_dma_free", 0);
> if (!aml_dma->free_wq)
> return -ENOMEM;
>
> @@ -712,7 +712,6 @@ static void aml_dma_remove(struct platform_device *pdev)
> if (aml_chan)
> tasklet_kill(&aml_chan->vchan.task);
> }
> - destroy_workqueue(aml_dma->free_wq);
> }
>
> static const struct of_device_id aml_dma_ids[] = {
> --
> 2.56.0
>