On Wed, Jun 10, 2026 at 08:52:37PM -0700, Rosen Penev wrote:
> When fsldma_request_irqs() fails on a per-channel IRQ, the unwind
> loop starts at the current index i, which calls free_irq() on the
> IRQ that request_irq() just failed to register.  Decrement i before
> the loop to skip the failed channel.
>
> Bug introduced by commit 586f54672b33 ("dmaengine: fsldma: convert
> to platform_get_irq_optional()").
>

fix tag here

Frank
> Assisted-by: opencode:big-pickle
> Signed-off-by: Rosen Penev <[email protected]>
> ---
>  drivers/dma/fsldma.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
> index 4475d50a94f5..c04a7fbd2ed0 100644
> --- a/drivers/dma/fsldma.c
> +++ b/drivers/dma/fsldma.c
> @@ -1088,7 +1088,7 @@ static int fsldma_request_irqs(struct fsldma_device 
> *fdev)
>       return 0;
>
>  out_unwind:
> -     for (/* none */; i >= 0; i--) {
> +     for (i--; i >= 0; i--) {
>               chan = fdev->chan[i];
>               if (!chan)
>                       continue;
> --
> 2.54.0
>

Reply via email to