]> 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)
commit62226f910231e622b31fe7e0ca400f36c34b0002
tree3d73e0b5bab64840f7c824f8469ec9464a99e12a
parent864215ec8089428d73ca9157d6866fe86916a345
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 fc9d5425cfca ("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