• Logan Gunthorpe's avatar
    RDMA/rw: switch to dma_map_sgtable() · 8e913a8d
    Logan Gunthorpe authored
    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
      is the dma mapped entries 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.
    
    Fixes: 0e353e34 ("IB/core: add RW API support for signature MRs")
    Fixes: a060b562 ("IB/core: generic RDMA READ/WRITE API")
    Link: https://lore.kernel.org/r/20211001213215.3761-1-logang@deltatee.comSigned-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
    8e913a8d
rw.c 20.6 KB