2022-02-01 10:48:46

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] dmaengine: ptdma: Fix the error handling path in pt_core_init()

In order to free resources correctly in the error handling path of
pt_core_init(), 2 goto's have to be switched. Otherwise, some resources
will leak and we will try to release things that have not been allocated
yet.

Fixes: fa5d823b16a9 ("dmaengine: ptdma: Initial driver for the AMD PTDMA")
Signed-off-by: Christophe JAILLET <[email protected]>
---
drivers/dma/ptdma/ptdma-dev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/ptdma/ptdma-dev.c b/drivers/dma/ptdma/ptdma-dev.c
index 8a6bf291a73f..3fa2a6ed4b68 100644
--- a/drivers/dma/ptdma/ptdma-dev.c
+++ b/drivers/dma/ptdma/ptdma-dev.c
@@ -207,7 +207,7 @@ int pt_core_init(struct pt_device *pt)
if (!cmd_q->qbase) {
dev_err(dev, "unable to allocate command queue\n");
ret = -ENOMEM;
- goto e_dma_alloc;
+ goto e_pool;
}

cmd_q->qidx = 0;
@@ -230,7 +230,7 @@ int pt_core_init(struct pt_device *pt)
/* Request an irq */
ret = request_irq(pt->pt_irq, pt_core_irq_handler, 0, dev_name(pt->dev), pt);
if (ret)
- goto e_pool;
+ goto e_dma_alloc;

/* Update the device registers with queue information. */
cmd_q->qcontrol &= ~CMD_Q_SIZE;
--
2.32.0


2022-02-01 20:42:24

by Sanjay R Mehta

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: ptdma: Fix the error handling path in pt_core_init()



On 1/30/2022 7:42 PM, Christophe JAILLET wrote:
> In order to free resources correctly in the error handling path of
> pt_core_init(), 2 goto's have to be switched. Otherwise, some resources
> will leak and we will try to release things that have not been allocated
> yet.
>
> Fixes: fa5d823b16a9 ("dmaengine: ptdma: Initial driver for the AMD PTDMA")
> Signed-off-by: Christophe JAILLET <[email protected]>

Acked-by: Sanjay R Mehta <[email protected]>
> ---
> drivers/dma/ptdma/ptdma-dev.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/dma/ptdma/ptdma-dev.c b/drivers/dma/ptdma/ptdma-dev.c
> index 8a6bf291a73f..3fa2a6ed4b68 100644
> --- a/drivers/dma/ptdma/ptdma-dev.c
> +++ b/drivers/dma/ptdma/ptdma-dev.c
> @@ -207,7 +207,7 @@ int pt_core_init(struct pt_device *pt)
> if (!cmd_q->qbase) {
> dev_err(dev, "unable to allocate command queue\n");
> ret = -ENOMEM;
> - goto e_dma_alloc;
> + goto e_pool;
> }
>
> cmd_q->qidx = 0;
> @@ -230,7 +230,7 @@ int pt_core_init(struct pt_device *pt)
> /* Request an irq */
> ret = request_irq(pt->pt_irq, pt_core_irq_handler, 0, dev_name(pt->dev), pt);
> if (ret)
> - goto e_pool;
> + goto e_dma_alloc;
>
> /* Update the device registers with queue information. */
> cmd_q->qcontrol &= ~CMD_Q_SIZE;
>

2022-02-02 15:51:09

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: ptdma: Fix the error handling path in pt_core_init()

On Sun, Jan 30, 2022 at 03:12:09PM +0100, Christophe JAILLET wrote:
> @@ -230,7 +230,7 @@ int pt_core_init(struct pt_device *pt)
> /* Request an irq */
> ret = request_irq(pt->pt_irq, pt_core_irq_handler, 0, dev_name(pt->dev), pt);
> if (ret)
> - goto e_pool;
> + goto e_dma_alloc;

These are ComeFrom label names. It's an unfortunate style of naming
labels based on the goto location instead of saying what the goto does.

This is one of those cases where the code has moved on, and now the name
no longer points to where it came from or to where it's going. It just
stands as a Hyperart Thomasson pointing to the past. It reminds us of
change and decay. Take time to smell the air in autumn. Beauty is all
around.

regards,
dan carpenter

2022-02-02 23:55:02

by Christophe JAILLET

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: ptdma: Fix the error handling path in pt_core_init()

Le 02/02/2022 à 08:15, Dan Carpenter a écrit :
> On Sun, Jan 30, 2022 at 03:12:09PM +0100, Christophe JAILLET wrote:
>> @@ -230,7 +230,7 @@ int pt_core_init(struct pt_device *pt)
>> /* Request an irq */
>> ret = request_irq(pt->pt_irq, pt_core_irq_handler, 0, dev_name(pt->dev), pt);
>> if (ret)
>> - goto e_pool;
>> + goto e_dma_alloc;
>
> These are ComeFrom label names. It's an unfortunate style of naming
> labels based on the goto location instead of saying what the goto does.
>
> This is one of those cases where the code has moved on, and now the name
> no longer points to where it came from or to where it's going. It just
> stands as a Hyperart Thomasson pointing to the past. It reminds us of
> change and decay. Take time to smell the air in autumn. Beauty is all
> around.
>
> regards,
> dan carpenter
>

Autumn is over. Winter is coming (tm). And Spring will soon be there.

I'll try to send a refreshing update as a V2 to go one step further and
do some spring cleaning in the labels used here.

CJ