drivers/infiniband/hw/erdma/erdma_verbs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
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>
---
drivers/infiniband/hw/erdma/erdma_verbs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
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);
}
--
2.43.0
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@gmail.com> > --- > 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); > } >
On Mon, 30 Jun 2025 11:23:46 +0200, 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. > > Applied, thanks! [1/1] Fix dma_unmap_sg() nents value https://git.kernel.org/rdma/rdma/c/4d67f2ac89a892 Best regards, -- Leon Romanovsky <leon@kernel.org>
© 2016 - 2025 Red Hat, Inc.