Skip to content

Commit

Permalink
IB/iser: Move fastreg descriptor allocation to iser_create_fastreg_desc
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Sagi Grimberg authored and Doug Ledford committed Aug 30, 2015
1 parent 48afbff commit eb6ea8c
Showing 1 changed file with 17 additions and 21 deletions.
38 changes: 17 additions & 21 deletions drivers/infiniband/ulp/iser/iser_verbs.c
Original file line number Diff line number Diff line change
Expand Up @@ -341,30 +341,35 @@ 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);
if (ret)
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);
}

/**
Expand All @@ -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;
}

Expand Down

0 comments on commit eb6ea8c

Please sign in to comment.