Message ID | 1b2573cf3cd077494531993239f80c08e7feb39e.1643551909.git.christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | dmaengine: ptdma: Fix the error handling path in pt_core_init() | expand |
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 <christophe.jaillet@wanadoo.fr> Acked-by: Sanjay R Mehta <sanju.mehta@amd.com> > --- > 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; >
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
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
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;
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 <christophe.jaillet@wanadoo.fr> --- drivers/dma/ptdma/ptdma-dev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)