Re: [PATCH] Fix dma_unmap_sg() nents value
From: Cheng Xu
Date: Wed Jul 02 2025 - 05:26:13 EST
On 6/30/25 5:23 PM, Thomas Fourier wrote:
> 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@xxxxxxxxx>
> ---
> drivers/infiniband/hw/erdma/erdma_verbs.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
Hi Thomas,
This patch is already accepted by Leon, and a late thanks to you.
Cheng Xu
> diff --git a/drivers/infiniband/hw/erdma/erdma_verbs.c b/drivers/infiniband/hw/erdma/erdma_verbs.c
> index af36a8d2df22..ec0ad4086066 100644
> --- a/drivers/infiniband/hw/erdma/erdma_verbs.c
> +++ b/drivers/infiniband/hw/erdma/erdma_verbs.c
> @@ -629,7 +629,8 @@ static struct erdma_mtt *erdma_create_cont_mtt(struct erdma_dev *dev,
> 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);
> }
>