From 36ba07ba64f7da69706d11ef9330fe617e80591b Mon Sep 17 00:00:00 2001 From: Amir Vadai Date: Mon, 8 Dec 2008 17:09:01 +0200 Subject: [PATCH] SDP: BUG1087 - fixed recovery from failing rdma_create_qp() Signed-off-by: Amir Vadai --- drivers/infiniband/ulp/sdp/sdp_cma.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/infiniband/ulp/sdp/sdp_cma.c b/drivers/infiniband/ulp/sdp/sdp_cma.c index ef72509778d3..0bbdbcad6f80 100644 --- a/drivers/infiniband/ulp/sdp/sdp_cma.c +++ b/drivers/infiniband/ulp/sdp/sdp_cma.c @@ -216,8 +216,6 @@ static int sdp_connect_handler(struct sock *sk, struct rdma_cm_id *id, sdp_init_sock(child); - sdp_add_sock(sdp_sk(child)); - dst_addr = (struct sockaddr_in *)&id->route.addr.dst_addr; inet_sk(child)->dport = dst_addr->sin_port; inet_sk(child)->daddr = dst_addr->sin_addr.s_addr; @@ -227,10 +225,13 @@ static int sdp_connect_handler(struct sock *sk, struct rdma_cm_id *id, rc = sdp_init_qp(child, id); if (rc) { - sk_common_release(child); + sdp_sk(child)->destructed_already = 1; + sk_free(child); return rc; } + sdp_add_sock(sdp_sk(child)); + sdp_sk(child)->max_bufs = sdp_sk(child)->bufs = ntohs(h->bsdh.bufs); sdp_sk(child)->min_bufs = sdp_sk(child)->bufs / 4; sdp_sk(child)->xmit_size_goal = ntohl(h->localrcvsz) - -- 2.50.1