]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
dma-buf: Make .invalidate_mapping() truly optional
authorLeon Romanovsky <leonro@nvidia.com>
Sat, 31 Jan 2026 05:34:15 +0000 (07:34 +0200)
committerChristian König <christian.koenig@amd.com>
Mon, 23 Feb 2026 18:51:06 +0000 (19:51 +0100)
The .invalidate_mapping() callback is documented as optional, yet it
effectively became mandatory whenever importer_ops were provided. This
led to cases where RDMA non-ODP code had to supply an empty stub.

Relax the checks in the dma-buf core so the callback can be omitted,
allowing RDMA code to drop the unnecessary function.

Removing the stub allows the next patch to tell that RDMA does not support
.invalidate_mapping() by checking for a NULL op.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
Link: https://lore.kernel.org/r/20260131-dmabuf-revoke-v7-5-463d956bd527@nvidia.com
drivers/dma-buf/dma-buf.c
drivers/infiniband/core/umem_dmabuf.c

index 1f6f6c5738e1835cdf3aa008de44f188d7870d40..3b32f15fbc18cbc63c0fb71b73d0be73daebef26 100644 (file)
@@ -1016,9 +1016,6 @@ dma_buf_dynamic_attach(struct dma_buf *dmabuf, struct device *dev,
        if (WARN_ON(!dmabuf || !dev))
                return ERR_PTR(-EINVAL);
 
-       if (WARN_ON(importer_ops && !importer_ops->invalidate_mappings))
-               return ERR_PTR(-EINVAL);
-
        attach = kzalloc_obj(*attach);
        if (!attach)
                return ERR_PTR(-ENOMEM);
@@ -1336,7 +1333,8 @@ void dma_buf_invalidate_mappings(struct dma_buf *dmabuf)
        dma_resv_assert_held(dmabuf->resv);
 
        list_for_each_entry(attach, &dmabuf->attachments, node)
-               if (attach->importer_ops)
+               if (attach->importer_ops &&
+                   attach->importer_ops->invalidate_mappings)
                        attach->importer_ops->invalidate_mappings(attach);
 }
 EXPORT_SYMBOL_NS_GPL(dma_buf_invalidate_mappings, "DMA_BUF");
index a69c4ff53db74201343f304f4dbf2163027492b3..056bac2e3240c6f9ad24a55da168caf6b9115acb 100644 (file)
@@ -181,18 +181,8 @@ struct ib_umem_dmabuf *ib_umem_dmabuf_get(struct ib_device *device,
 }
 EXPORT_SYMBOL(ib_umem_dmabuf_get);
 
-static void
-ib_umem_dmabuf_unsupported_move_notify(struct dma_buf_attachment *attach)
-{
-       struct ib_umem_dmabuf *umem_dmabuf = attach->importer_priv;
-
-       ibdev_warn_ratelimited(umem_dmabuf->umem.ibdev,
-                              "Invalidate callback should not be called when memory is pinned\n");
-}
-
 static struct dma_buf_attach_ops ib_umem_dmabuf_attach_pinned_ops = {
        .allow_peer2peer = true,
-       .invalidate_mappings = ib_umem_dmabuf_unsupported_move_notify,
 };
 
 struct ib_umem_dmabuf *