]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
dmaengine: idxd: fix possible wrong descriptor completion in llist_abort_desc()
authorTuo Li <islituo@gmail.com>
Tue, 6 Jan 2026 03:24:28 +0000 (11:24 +0800)
committerVinod Koul <vkoul@kernel.org>
Mon, 9 Mar 2026 11:27:11 +0000 (12:27 +0100)
At the end of this function, d is the traversal cursor of flist, but the
code completes found instead. This can lead to issues such as NULL pointer
dereferences, double completion, or descriptor leaks.

Fix this by completing d instead of found in the final
list_for_each_entry_safe() loop.

Fixes: aa8d18becc0c ("dmaengine: idxd: add callback support for iaa crypto")
Signed-off-by: Tuo Li <islituo@gmail.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://patch.msgid.link/20260106032428.162445-1-islituo@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/idxd/submit.c

index 6db1c5fcedc5800aca536eee264118b230d1a477..03217041b8b3ebfaa67a757e131d5428be36d321 100644 (file)
@@ -138,7 +138,7 @@ static void llist_abort_desc(struct idxd_wq *wq, struct idxd_irq_entry *ie,
         */
        list_for_each_entry_safe(d, t, &flist, list) {
                list_del_init(&d->list);
-               idxd_dma_complete_txd(found, IDXD_COMPLETE_ABORT, true,
+               idxd_dma_complete_txd(d, IDXD_COMPLETE_ABORT, true,
                                      NULL, NULL);
        }
 }