IB/iser: Move fastreg descriptor allocation to iser_create_fastreg_desc
authorSagi Grimberg <sagig@mellanox.com>
Thu, 6 Aug 2015 15:32:57 +0000 (18:32 +0300)
committerDoug Ledford <dledford@redhat.com>
Sun, 30 Aug 2015 22:12:30 +0000 (18:12 -0400)
Don't have the caller allocate the structure and worry about
freeing it in case the routine failed.

This patch does not change any functionality.

Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Adir Lev <adirl@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/ulp/iser/iser_verbs.c

index 17f43cf354dad859832d9dfabe6db6276e6ab004..c41bd422ed6037fde0dad91ad4c2349c593b3d26 100644 (file)
@@ -341,17 +341,20 @@ iser_free_pi_ctx(struct iser_pi_context *pi_ctx)
        kfree(pi_ctx);
 }
 
-static int
+static struct iser_fr_desc *
 iser_create_fastreg_desc(struct ib_device *ib_device, struct ib_pd *pd,
-                        bool pi_enable, struct iser_fr_desc *desc)
+                        bool pi_enable)
 {
+       struct iser_fr_desc *desc;
        int ret;
 
+       desc = kzalloc(sizeof(*desc), GFP_KERNEL);
+       if (!desc)
+               return ERR_PTR(-ENOMEM);
+
        ret = iser_alloc_reg_res(ib_device, pd, &desc->rsc);
-       if (ret) {
-               iser_err("failed to allocate reg_resources\n");
-               return ret;
-       }
+       if (ret)
+               goto reg_res_alloc_failure;
 
        if (pi_enable) {
                ret = iser_alloc_pi_ctx(ib_device, pd, desc);
@@ -359,12 +362,14 @@ iser_create_fastreg_desc(struct ib_device *ib_device, struct ib_pd *pd,
                        goto pi_ctx_alloc_failure;
        }
 
-       return 0;
+       return desc;
 
 pi_ctx_alloc_failure:
        iser_free_reg_res(&desc->rsc);
+reg_res_alloc_failure:
+       kfree(desc);
 
-       return ret;
+       return ERR_PTR(ret);
 }
 
 /**
@@ -381,19 +386,10 @@ int iser_alloc_fastreg_pool(struct ib_conn *ib_conn, unsigned cmds_max)
        INIT_LIST_HEAD(&ib_conn->fastreg.pool);
        ib_conn->fastreg.pool_size = 0;
        for (i = 0; i < cmds_max; i++) {
-               desc = kzalloc(sizeof(*desc), GFP_KERNEL);
-               if (!desc) {
-                       iser_err("Failed to allocate a new fast_reg descriptor\n");
-                       ret = -ENOMEM;
-                       goto err;
-               }
-
-               ret = iser_create_fastreg_desc(device->ib_device, device->pd,
-                                              ib_conn->pi_support, desc);
-               if (ret) {
-                       iser_err("Failed to create fastreg descriptor err=%d\n",
-                                ret);
-                       kfree(desc);
+               desc = iser_create_fastreg_desc(device->ib_device, device->pd,
+                                               ib_conn->pi_support);
+               if (IS_ERR(desc)) {
+                       ret = PTR_ERR(desc);
                        goto err;
                }