linux/net/sunrpc/xprtrdma
Chuck Lever ca1c671302 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 4143f34e01 ("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>
2020-02-13 15:35:33 -05:00
..
backchannel.c xprtrdma: Allocate and map transport header buffers at connect time 2020-01-15 10:54:32 -05:00
frwr_ops.c xprtrdma: Fix DMA scatter-gather list mapping imbalance 2020-02-13 15:35:33 -05:00
Makefile xprtrdma: Remove support for FMR memory registration 2019-01-02 12:05:17 -05:00
module.c NFS client updates for Linux 4.18 2018-06-12 10:09:03 -07:00
rpc_rdma.c xprtrdma: Allocate and map transport header buffers at connect time 2020-01-15 10:54:32 -05:00
svc_rdma_backchannel.c SUNRPC: Fix backchannel latency metrics 2019-11-21 17:05:14 -05:00
svc_rdma_recvfrom.c svcrdma: Use llist for managing cache of recv_ctxts 2019-08-19 10:59:28 -04:00
svc_rdma_rw.c scsi: lib/sg_pool.c: improve APIs for allocating sg pool 2019-06-20 15:21:33 -04:00
svc_rdma_sendto.c svcrdma: Improve DMA mapping trace points 2019-10-08 16:01:33 -04:00
svc_rdma_transport.c Highlights: 2019-09-27 17:00:27 -07:00
svc_rdma.c svcrdma: Remove svc_rdma_wq 2019-08-19 10:59:28 -04:00
transport.c xprtrdma: Eliminate per-transport "max pages" 2020-01-15 10:54:32 -05:00
verbs.c xprtrdma: DMA map rr_rdma_buf as each rpcrdma_rep is created 2020-01-15 10:54:32 -05:00
xprt_rdma.h xprtrdma: Allocate and map transport header buffers at connect time 2020-01-15 10:54:32 -05:00