]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Aug 2025 10:13:51 +0000 (12:13 +0200)
[ Upstream commit 1db50f7b7a793670adcf062df9ff27798829d963 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/erdma/erdma_verbs.c

index 51d619edb6c5d2722914f51cfc768080f855ec0e..e56ba86d460e0adc7b40f9611eacdc7048a8f511 100644 (file)
@@ -597,7 +597,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);
 }