]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Fix dma_unmap_sg() nents value
authorThomas Fourier <fourier.thomas@gmail.com>
Mon, 30 Jun 2025 09:23:46 +0000 (11:23 +0200)
committerLeon Romanovsky <leon@kernel.org>
Wed, 2 Jul 2025 09:11:44 +0000 (05:11 -0400)
The dma_unmap_sg() functions should be called with the same nents as the
dma_map_sg(), not the value the map function returned.

Fixes: ed10435d3583 ("RDMA/erdma: Implement hierarchical MTT")
Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
Link: https://patch.msgid.link/20250630092346.81017-2-fourier.thomas@gmail.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/erdma/erdma_verbs.c

index af36a8d2df2285c682ab3cd88802379a01376c44..ec0ad40860668ada8163a91bbb26435973c310fb 100644 (file)
@@ -629,7 +629,8 @@ err_free_mtt:
 static void erdma_destroy_mtt_buf_sg(struct erdma_dev *dev,
                                     struct erdma_mtt *mtt)
 {
-       dma_unmap_sg(&dev->pdev->dev, mtt->sglist, mtt->nsg, DMA_TO_DEVICE);
+       dma_unmap_sg(&dev->pdev->dev, mtt->sglist,
+                    DIV_ROUND_UP(mtt->size, PAGE_SIZE), DMA_TO_DEVICE);
        vfree(mtt->sglist);
 }