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
>