2021-01-24 07:13:38

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] dmaengine: ti: k3-udma: Fix a resource leak in an error handling path

In 'dma_pool_create()', we return -ENOMEM, but don't release the resources
already allocated, as in all the other error handling paths.

Go to 'err_res_free' instead of returning directly.

Fixes: 017794739702 ("dmaengine: ti: k3-udma: Initial support for K3 BCDMA")
Signed-off-by: Christophe JAILLET <[email protected]>
---
This patch is not even compile tested.
I don't have the needed configuration.
---
drivers/dma/ti/k3-udma.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
index 8e3fd1119a77..96ad21869ba7 100644
--- a/drivers/dma/ti/k3-udma.c
+++ b/drivers/dma/ti/k3-udma.c
@@ -2447,7 +2447,8 @@ static int bcdma_alloc_chan_resources(struct dma_chan *chan)
dev_err(ud->ddev.dev,
"Descriptor pool allocation failed\n");
uc->use_dma_pool = false;
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto err_res_free;
}

uc->use_dma_pool = true;
--
2.27.0


2021-01-26 05:58:59

by Péter Ujfalusi

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: ti: k3-udma: Fix a resource leak in an error handling path

Hi,

On 1/24/21 9:09 AM, Christophe JAILLET wrote:
> In 'dma_pool_create()', we return -ENOMEM, but don't release the resources
> already allocated, as in all the other error handling paths.
>
> Go to 'err_res_free' instead of returning directly.

Interesting that I only had error for the bcdma path...

> Fixes: 017794739702 ("dmaengine: ti: k3-udma: Initial support for K3 BCDMA")
> Signed-off-by: Christophe JAILLET <[email protected]>
> ---
> This patch is not even compile tested.
> I don't have the needed configuration.

No issue, that patch is trivial,

Acked-by: Peter Ujfalusi <[email protected]>

> ---
> drivers/dma/ti/k3-udma.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
> index 8e3fd1119a77..96ad21869ba7 100644
> --- a/drivers/dma/ti/k3-udma.c
> +++ b/drivers/dma/ti/k3-udma.c
> @@ -2447,7 +2447,8 @@ static int bcdma_alloc_chan_resources(struct dma_chan *chan)
> dev_err(ud->ddev.dev,
> "Descriptor pool allocation failed\n");
> uc->use_dma_pool = false;
> - return -ENOMEM;
> + ret = -ENOMEM;
> + goto err_res_free;
> }
>
> uc->use_dma_pool = true;
>

--
Péter

2021-01-27 06:15:44

by Vinod Koul

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: ti: k3-udma: Fix a resource leak in an error handling path

On 24-01-21, 08:09, Christophe JAILLET wrote:
> In 'dma_pool_create()', we return -ENOMEM, but don't release the resources
> already allocated, as in all the other error handling paths.
>
> Go to 'err_res_free' instead of returning directly.

Applied, thanks

--
~Vinod