[MLX4] Fixed QP memory leak, inserted in 1288 fix.
authorleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 27 Nov 2008 13:16:32 +0000 (13:16 +0000)
committerleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 27 Nov 2008 13:16:32 +0000 (13:16 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@1770 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

hw/mlx4/kernel/bus/ib/qp.c

index 2a9131c..16527d2 100644 (file)
@@ -438,6 +438,11 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
        if (err)\r
                goto err_wrid;\r
 \r
+       if (err) {\r
+               mlx4_qp_release_range(dev->dev, sqpn, 1);\r
+               goto err_wrid;\r
+       }\r
+\r
        /*\r
         * Hardware wants QPN written in big-endian order (after\r
         * shifting) for send doorbell.  Precompute this value to save\r
@@ -551,6 +556,10 @@ static void destroy_qp_common(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp,
        mlx4_ib_unlock_cqs(send_cq, recv_cq);\r
 \r
        mlx4_qp_free(dev->dev, &qp->mqp);\r
+\r
+       if (!is_sqp(dev, qp))\r
+               mlx4_qp_release_range(dev->dev, qp->mqp.qpn, 1);\r
+\r
        mlx4_mtt_cleanup(dev->dev, &qp->mtt);\r
 \r
        if (is_user) {\r
@@ -1605,7 +1614,7 @@ out:
 \r
 #if 0\r
                if (qp->mqp.qpn == 0x41)\r
-                       DbgPrint( "[MLX4_BUS] mlx4_ib_post_send : qtype %d, qpn %#x, nreq %d, sq.head %#x, wqe_ix %d, db %p \n", \r
+                       cl_dbg_out( "[MLX4_BUS] mlx4_ib_post_send : qtype %d, qpn %#x, nreq %d, sq.head %#x, wqe_ix %d, db %p \n", \r
                                ibqp->qp_type, qp->mqp.qpn, nreq, qp->sq.head, ind, \r
                                (u8*)to_mdev(ibqp->device)->uar_map + MLX4_SEND_DOORBELL );\r
 #endif         \r
@@ -1687,7 +1696,7 @@ out:
 \r
 #if 0\r
                if (qp->mqp.qpn == 0x41)\r
-                       DbgPrint( "[MLX4_BUS] mlx4_ib_post_recv : qtype %d, qpn %#x, nreq %d, rq.head %#x, wqe_ix %d, db_obj %p, db %p \n", \r
+                       cl_dbg_out( "[MLX4_BUS] mlx4_ib_post_recv : qtype %d, qpn %#x, nreq %d, rq.head %#x, wqe_ix %d, db_obj %p, db %p \n", \r
                                ibqp->qp_type, qp->mqp.qpn, nreq, qp->rq.head, ind, &qp->db, qp->db.db );\r
 #endif         \r
        }\r