]> git.baikalelectronics.ru Git - kernel.git/commit
xprtrdma: Fix DMA scatter-gather list mapping imbalance
authorChuck Lever <chuck.lever@oracle.com>
Wed, 12 Feb 2020 16:12:30 +0000 (11:12 -0500)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Thu, 13 Feb 2020 20:35:33 +0000 (15:35 -0500)
commit39d1af6544a4fd2608b8c47d1389865dbe691aaa
tree3d73e0b5bab64840f7c824f8469ec9464a99e12a
parent0084481573227fdd8d21ebf99017f9004c585352
xprtrdma: Fix DMA scatter-gather list mapping imbalance

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 18acbf1b8d6f ("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@tomt.net>
Suggested-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Cc: stable@vger.kernel.org
Reviewed-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
net/sunrpc/xprtrdma/frwr_ops.c