From 5dadadeaec85ad74205f20544fa3fc7b9043fdea Mon Sep 17 00:00:00 2001 From: Roland Dreier Date: Wed, 24 Feb 2010 15:07:59 -0800 Subject: [PATCH] --- yaml --- r: 184993 b: refs/heads/master c: da9d2f07306fc29a2f10885c2b0a463f3863c365 h: refs/heads/master i: 184991: 952539bb437949e702f086a893f68dc6ab7981ec v: v3 --- [refs] | 2 +- trunk/drivers/infiniband/ulp/srp/ib_srp.c | 31 +++++++++++++---------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index 017e2db1c260..2366ca99ccc8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9c03dc9f19351edf25c1107e3cfd3cc538c7ab9e +refs/heads/master: da9d2f07306fc29a2f10885c2b0a463f3863c365 diff --git a/trunk/drivers/infiniband/ulp/srp/ib_srp.c b/trunk/drivers/infiniband/ulp/srp/ib_srp.c index 441ea7c2e7c4..ed3f9ebae882 100644 --- a/trunk/drivers/infiniband/ulp/srp/ib_srp.c +++ b/trunk/drivers/infiniband/ulp/srp/ib_srp.c @@ -232,15 +232,14 @@ static int srp_create_target_ib(struct srp_target_port *target) srp_recv_completion, NULL, target, SRP_RQ_SIZE, 0); if (IS_ERR(target->recv_cq)) { ret = PTR_ERR(target->recv_cq); - goto out; + goto err; } target->send_cq = ib_create_cq(target->srp_host->srp_dev->dev, srp_send_completion, NULL, target, SRP_SQ_SIZE, 0); if (IS_ERR(target->send_cq)) { ret = PTR_ERR(target->send_cq); - ib_destroy_cq(target->recv_cq); - goto out; + goto err_recv_cq; } ib_req_notify_cq(target->recv_cq, IB_CQ_NEXT_COMP); @@ -258,20 +257,26 @@ static int srp_create_target_ib(struct srp_target_port *target) target->qp = ib_create_qp(target->srp_host->srp_dev->pd, init_attr); if (IS_ERR(target->qp)) { ret = PTR_ERR(target->qp); - ib_destroy_cq(target->send_cq); - ib_destroy_cq(target->recv_cq); - goto out; + goto err_send_cq; } ret = srp_init_qp(target, target->qp); - if (ret) { - ib_destroy_qp(target->qp); - ib_destroy_cq(target->send_cq); - ib_destroy_cq(target->recv_cq); - goto out; - } + if (ret) + goto err_qp; -out: + kfree(init_attr); + return 0; + +err_qp: + ib_destroy_qp(target->qp); + +err_send_cq: + ib_destroy_cq(target->send_cq); + +err_recv_cq: + ib_destroy_cq(target->recv_cq); + +err: kfree(init_attr); return ret; }