dmaengine: pl330: Clear callback_result for re-used descs
authorDaniel Scally <dan.scally@ideasonboard.com>
Thu, 18 Jan 2024 11:29:59 +0000 (11:29 +0000)
committerVinod Koul <vkoul@kernel.org>
Mon, 22 Jan 2024 10:34:13 +0000 (16:04 +0530)
The pl330 driver re-uses DMA descriptors rather than reallocating
them each time. At present, upon re-use the .callback member is
cleared, but .callback result is not. This causes problems where a
consuming driver sets the .callback_result for some submissions but
not for others, as eventually the function is invoked erronously.

Clear .callback_result along with .callback

Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
Link: https://lore.kernel.org/r/20240118112959.1027471-1-dan.scally@ideasonboard.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/pl330.c

index c29744bfdf2c2afc4ae6a7b6fdcd963a19db2977..5f6d7f1e095f906ec22b4a4b6f67cc7309242994 100644 (file)
@@ -2588,6 +2588,7 @@ static struct dma_pl330_desc *pluck_desc(struct list_head *pool,
 
                desc->status = PREP;
                desc->txd.callback = NULL;
+               desc->txd.callback_result = NULL;
        }
 
        spin_unlock_irqrestore(lock, flags);