On Wed, Feb 12, 2020 at 11:12:30AM -0500, Chuck Lever wrote: > The @nents value that was passed to ib_dma_map_sg() has to be passed > to the matching ib_dma_unmap_sg() call. If ib_dma_map_sg() choses to > concatenate sg entries, it will return a different nents value than > it was passed. > > The bug was exposed by recent changes to the AMD IOMMU driver, which > enabled sg entry concatenation. > > Looking all the way back to commit 4143f34e01e9 ("xprtrdma: Port to > new memory registration API") and reviewing other kernel ULPs, it's > not clear that the frwr_map() logic was ever correct for this case. > > Reported-by: Andre Tomt <andre@xxxxxxxx> > Suggested-by: Robin Murphy <robin.murphy@xxxxxxx> > Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx # v5.5 > --- > net/sunrpc/xprtrdma/frwr_ops.c | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) Yep Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxxxx> Jason