summaryrefslogtreecommitdiffstats
path: root/transport/ib-verbs
diff options
context:
space:
mode:
authorRaghavendra G <raghavendra@gluster.com>2009-08-31 22:35:28 +0000
committerAnand V. Avati <avati@dev.gluster.com>2009-09-02 10:30:15 -0700
commitcf1005c9f650069a22d443dec32f33129431990a (patch)
treee7ffd0bd72952933bb5adba5933a303a2ae4e0ee /transport/ib-verbs
parentaddf1c713a017a7b1b4a871243f599267255e815 (diff)
ib-verbs: handle failure of ibv_create_qp gracefully.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 217 (crash in ib_verbs_create_qp) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=217
Diffstat (limited to 'transport/ib-verbs')
-rw-r--r--transport/ib-verbs/src/ib-verbs.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/transport/ib-verbs/src/ib-verbs.c b/transport/ib-verbs/src/ib-verbs.c
index 0df10439fef..b1ce521840c 100644
--- a/transport/ib-verbs/src/ib-verbs.c
+++ b/transport/ib-verbs/src/ib-verbs.c
@@ -761,6 +761,7 @@ ib_verbs_create_qp (transport_t *this)
"%s: could not create QP",
this->xl->name);
ret = -1;
+ goto out;
} else if (ibv_modify_qp (peer->qp, &attr,
IBV_QP_STATE |
IBV_QP_PKEY_INDEX |
@@ -771,6 +772,7 @@ ib_verbs_create_qp (transport_t *this)
"%s: failed to modify QP to INIT state",
this->xl->name);
ret = -1;
+ goto out;
}
peer->local_lid = ib_verbs_get_local_lid (device->context,
@@ -780,6 +782,7 @@ ib_verbs_create_qp (transport_t *this)
ib_verbs_register_peer (device, peer->qp->qp_num, peer);
+out:
if (ret == -1)
__ib_verbs_destroy_qp (this);