summaryrefslogtreecommitdiff
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorJacob Moroni <jmoroni@google.com>2026-07-28 14:15:01 +0000
committerLeon Romanovsky <leon@kernel.org>2026-08-05 10:35:36 -0400
commitd24ce259185e76be64ac9a895057371be548cd39 (patch)
treeed448737d5e352b9caacf80a2c20ecc0dbcad09e /drivers/infiniband
parent09d09e5d79f3174bc082fcea85743a6ce4b69016 (diff)
downloadlinux-next-d24ce259185e76be64ac9a895057371be548cd39.tar.gz
linux-next-d24ce259185e76be64ac9a895057371be548cd39.zip
RDMA/irdma: Remove dmabuf checks in rereg_mr
Now that ib_umem_check_rereg entirely blocks rereg for dmabuf umems, the extra logic can be removed from irdma. Signed-off-by: Jacob Moroni <jmoroni@google.com> Link: https://patch.msgid.link/20260728141501.1425737-2-jmoroni@google.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/hw/irdma/verbs.c31
1 files changed, 1 insertions, 30 deletions
diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
index 16c80367270f..5e03cf39fa6e 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -3885,8 +3885,6 @@ static struct ib_mr *irdma_rereg_user_mr(struct ib_mr *ib_mr, int flags,
struct irdma_device *iwdev = to_iwdev(ib_mr->device);
struct irdma_mr *iwmr = to_iwmr(ib_mr);
struct irdma_pbl *iwpbl = &iwmr->iwpbl;
- bool dmabuf_revocable = iwmr->region && iwmr->region->is_dmabuf;
- struct ib_umem_dmabuf *umem_dmabuf;
int ret;
ret = ib_no_udata_io(udata);
@@ -3903,26 +3901,9 @@ static struct ib_mr *irdma_rereg_user_mr(struct ib_mr *ib_mr, int flags,
if (ret)
return ERR_PTR(ret);
- if (dmabuf_revocable) {
- umem_dmabuf = to_ib_umem_dmabuf(iwmr->region);
-
- ib_umem_dmabuf_revoke_lock(umem_dmabuf);
-
- /* If the dmabuf has been revoked, it means that the region has
- * been invalidated in HW. We must not allow it to become valid
- * again unless the user is requesting a change in translation
- * which will end up dropping the umem dmabuf and allocating an
- * entirely new umem anyway.
- */
- if (umem_dmabuf->revoked && !(flags & IB_MR_REREG_TRANS)) {
- ret = -EINVAL;
- goto err_unlock;
- }
- }
-
ret = irdma_hwdereg_mr(ib_mr);
if (ret)
- goto err_unlock;
+ return ERR_PTR(ret);
if (flags & IB_MR_REREG_ACCESS)
iwmr->access = new_access;
@@ -3939,12 +3920,6 @@ static struct ib_mr *irdma_rereg_user_mr(struct ib_mr *ib_mr, int flags,
iwpbl->pbl_allocated = false;
}
- if (dmabuf_revocable) {
- /* Must unlock before release to prevent deadlock */
- ib_umem_dmabuf_revoke_unlock(umem_dmabuf);
- dmabuf_revocable = false;
- }
-
if (iwmr->region) {
ib_umem_release(iwmr->region);
iwmr->region = NULL;
@@ -3955,10 +3930,6 @@ static struct ib_mr *irdma_rereg_user_mr(struct ib_mr *ib_mr, int flags,
ret = irdma_hwreg_mr(iwdev, iwmr, iwmr->access);
}
-err_unlock:
- if (dmabuf_revocable)
- ib_umem_dmabuf_revoke_unlock(umem_dmabuf);
-
return ret ? ERR_PTR(ret) : NULL;
}