]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
[MLX4] more clean allocation of WRID array.
authorleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Fri, 10 Oct 2008 12:39:03 +0000 (12:39 +0000)
committerleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Fri, 10 Oct 2008 12:39:03 +0000 (12:39 +0000)
Signed-off_by: Alex Estrin

git-svn-id: svn://openib.tc.cornell.edu/gen1@1640 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

branches/WOF2-0/trunk/hw/mlx4/kernel/bus/ib/qp.c

index 38a9d32246545a7f9d73cf8e75f140bca75a64bc..2a9131c6cdfc25407379690031090514c7b7e6af 100644 (file)
@@ -412,12 +412,20 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
                if (err)\r
                        goto err_mtt;\r
 \r
-               qp->sq.wrid  = kmalloc(qp->sq.wqe_cnt * sizeof (u64), GFP_KERNEL);\r
-               qp->rq.wrid  = kmalloc(qp->rq.wqe_cnt * sizeof (u64), GFP_KERNEL);\r
+               if (qp->sq.wqe_cnt) {\r
+                       qp->sq.wrid  = kmalloc(qp->sq.wqe_cnt * sizeof (u64), GFP_KERNEL);\r
+                       if (!qp->sq.wrid) {\r
+                               err = -ENOMEM;\r
+                               goto err_wrid;\r
+                       }\r
+               }                       \r
 \r
-               if (!qp->sq.wrid || !qp->rq.wrid) {\r
-                       err = -ENOMEM;\r
-                       goto err_wrid;\r
+               if (qp->rq.wqe_cnt) {\r
+                       qp->rq.wrid  = kmalloc(qp->rq.wqe_cnt * sizeof (u64), GFP_KERNEL);\r
+                       if (!qp->rq.wrid) {\r
+                               err = -ENOMEM;\r
+                               goto err_wrid;\r
+                       }\r
                }\r
        }\r
 \r
@@ -452,8 +460,10 @@ err_wrid:
                        mlx4_ib_db_unmap_user(to_mucontext(pd->p_uctx),\r
                                              &qp->db);\r
        } else {\r
-               kfree(qp->sq.wrid);\r
-               kfree(qp->rq.wrid);\r
+               if (qp->sq.wrid)\r
+                       kfree(qp->sq.wrid);\r
+               if (qp->rq.wrid)\r
+                       kfree(qp->rq.wrid);\r
        }\r
 \r
 err_mtt:\r