Re:Re: [PATCH] dma: at_hdmac: Fix IRQ leak in at_dma_probe()
From: dd
Date: Thu May 07 2026 - 21:36:42 EST
Hi Frank,
Thanks for your review.
You're right that in the normal case platform_get_irq() returns the
same value as 'irq'. However, this pattern triggers a smatch warning:
drivers/dma/at_hdmac.c:2110 at_dma_probe()
warn: 'irq' from request_irq() not released on lines: 2110.
Static analysis tools cannot guarantee that platform_get_irq() will
always match the previously requested IRQ, so they treat it as a
potential resource leak.
Using the stored 'irq' makes the error path unambiguous and silences
the warning. Therefore I think it qualifies as a small bug fix rather
than just cleanup.
Thanks,
At 2026-05-08 02:24:52, "Frank Li" <Frank.li@xxxxxxx> wrote:
>On Thu, May 07, 2026 at 03:57:50PM +0800, Hongling Zeng wrote:
>> When request_irq() succeeds but a later error occurs in at_dma_probe(),
>> the error handling path attempts to free the IRQ by calling
>> platform_get_irq() again instead of using the already stored IRQ number
>> in the local variable 'irq'.
>>
>> Fix this by using the stored 'irq' variable directly in free_irq().
>>
>> Fixes: dc78baa2b90b2 ("dmaengine: Atmel HDMAC driver")
>
>Any actual problem do you meet? suppose it should be the same as 'irq'.
>
>of course using varible irq is correct. but this patch should belong code
>cleanup, not fix.
>
>Frank
>
>> Signed-off-by: Hongling Zeng <zenghongling@xxxxxxxxxx>
>> ---
>> drivers/dma/at_hdmac.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
>> index e5b30a57c477..2a860679b9e1 100644
>> --- a/drivers/dma/at_hdmac.c
>> +++ b/drivers/dma/at_hdmac.c
>> @@ -2109,7 +2109,7 @@ static int __init at_dma_probe(struct platform_device *pdev)
>> err_memset_pool_create:
>> dma_pool_destroy(atdma->lli_pool);
>> err_desc_pool_create:
>> - free_irq(platform_get_irq(pdev, 0), atdma);
>> + free_irq(irq, atdma);
>> err_irq:
>> clk_disable_unprepare(atdma->clk);
>> return err;
>> --
>> 2.25.1
>>