RDMA/umem: Use dma-buf locked API to solve deadlock
authorMaor Gottlieb <maorg@nvidia.com>
Mon, 30 Jan 2023 14:25:50 +0000 (16:25 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 31 Jan 2023 14:24:49 +0000 (10:24 -0400)
The cited commit moves umem to call the unlocked versions of dmabuf
unmap/map attachment, but the lock is held while calling to these
functions, hence move back to the locked versions of these APIs.

Fixes: 21c9c5c0784f ("RDMA/umem: Prepare to dynamic dma-buf locking specification")
Link: https://lore.kernel.org/r/311c2cb791f8af75486df446819071357353db1b.1675088709.git.leon@kernel.org
Signed-off-by: Maor Gottlieb <maorg@nvidia.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/core/umem_dmabuf.c

index 43b26bc122885e5f0e16e8527398ed4ec5647651..39357dc2d229f0c9866fe6b3803b5394f494fee3 100644 (file)
@@ -26,8 +26,8 @@ int ib_umem_dmabuf_map_pages(struct ib_umem_dmabuf *umem_dmabuf)
        if (umem_dmabuf->sgt)
                goto wait_fence;
 
-       sgt = dma_buf_map_attachment_unlocked(umem_dmabuf->attach,
-                                             DMA_BIDIRECTIONAL);
+       sgt = dma_buf_map_attachment(umem_dmabuf->attach,
+                                    DMA_BIDIRECTIONAL);
        if (IS_ERR(sgt))
                return PTR_ERR(sgt);
 
@@ -103,8 +103,8 @@ void ib_umem_dmabuf_unmap_pages(struct ib_umem_dmabuf *umem_dmabuf)
                umem_dmabuf->last_sg_trim = 0;
        }
 
-       dma_buf_unmap_attachment_unlocked(umem_dmabuf->attach, umem_dmabuf->sgt,
-                                         DMA_BIDIRECTIONAL);
+       dma_buf_unmap_attachment(umem_dmabuf->attach, umem_dmabuf->sgt,
+                                DMA_BIDIRECTIONAL);
 
        umem_dmabuf->sgt = NULL;
 }