Re: [PATCH] RDMA/rw: switch to dma_map_sgtable()

From: Jason Gunthorpe
Date: Tue Oct 05 2021 - 14:22:08 EST


On Fri, Oct 01, 2021 at 03:32:15PM -0600, Logan Gunthorpe wrote:
> There are a couple of subtle error path bugs related to mapping the
> sgls:
>
> - In rdma_rw_ctx_init(), dma_unmap would be called with an sg that
> could have been incremented from the original call, as well as an
> nents that was not the original number of nents called when mapped.
> - Similarly in rdma_rw_ctx_signature_init, both sg and prot_sg were
> unmapped with the incorrect number of nents.
>
> To fix this, switch to the sgtable interface for mapping which
> conveniently stores the original nents for unmapping. This will get
> cleaned up further once the dma mapping interface supports P2PDMA and
> pci_p2pdma_map_sg() can be removed. At that point the sgtable interface
> will be preferred as it offers better error reporting for P2PDMA pages.
>
> Signed-off-by: Logan Gunthorpe <logang@xxxxxxxxxxxx>
---
> drivers/infiniband/core/rw.c | 66 ++++++++++++++++++++++--------------
> 1 file changed, 41 insertions(+), 25 deletions(-)

Applied to for-next, thanks

Jason