[ofa-general] [PATCH] mlx4: fix destroy qp deadlock
Jack Morgenstein
jackm at dev.mellanox.co.il
Sun Apr 22 07:31:26 PDT 2007
Need to use cq_clean function which does not take spinlocks here.
(cq locks are already taken by call to mlx4_ib_lock_cqs).
Signed-off-by: Jack Morgenstein <jackm at dev.mellanox.co.il>
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 1f51bfd..66ae262 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -431,10 +431,10 @@ static void destroy_qp_common(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp,
mlx4_ib_lock_cqs(send_cq, recv_cq);
if (!is_user) {
- mlx4_ib_cq_clean(recv_cq, qp->mqp.qpn,
+ __mlx4_ib_cq_clean(recv_cq, qp->mqp.qpn,
qp->ibqp.srq ? to_msrq(qp->ibqp.srq): NULL);
if (send_cq != recv_cq)
- mlx4_ib_cq_clean(send_cq, qp->mqp.qpn, NULL);
+ __mlx4_ib_cq_clean(send_cq, qp->mqp.qpn, NULL);
}
mlx4_qp_remove(dev->dev, &qp->mqp);
More information about the general
mailing list