]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
RDMA/irdma: Fix deadlock during netdev reset with active connections
authorAnil Samal <anil.samal@intel.com>
Mon, 16 Mar 2026 18:39:45 +0000 (13:39 -0500)
committerLeon Romanovsky <leonro@nvidia.com>
Wed, 18 Mar 2026 10:20:53 +0000 (06:20 -0400)
Resolve deadlock that occurs when user executes netdev reset while RDMA
applications (e.g., rping) are active. The netdev reset causes ice
driver to remove irdma auxiliary driver, triggering device_delete and
subsequent client removal. During client removal, uverbs_client waits
for QP reference count to reach zero while cma_client holds the final
reference, creating circular dependency and indefinite wait in iWARP
mode. Skip QP reference count wait during device reset to prevent
deadlock.

Fixes: c8f304d75f6c ("RDMA/irdma: Prevent QP use after free")
Signed-off-by: Anil Samal <anil.samal@intel.com>
Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/irdma/verbs.c

index 9920a3304be3d6d11614935a05241fe0bd48f892..95f590c10c051563dac98045a5774543a6724678 100644 (file)
@@ -558,7 +558,8 @@ static int irdma_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata)
        }
 
        irdma_qp_rem_ref(&iwqp->ibqp);
-       wait_for_completion(&iwqp->free_qp);
+       if (!iwdev->rf->reset)
+               wait_for_completion(&iwqp->free_qp);
        irdma_free_lsmm_rsrc(iwqp);
        irdma_cqp_qp_destroy_cmd(&iwdev->rf->sc_dev, &iwqp->sc_qp);