From: Amir Vadai Date: Mon, 8 Dec 2008 15:09:01 +0000 (+0200) Subject: SDP: BUG1087 - fixed recovery from failing rdma_create_qp() X-Git-Tag: v4.1.12-92~264^2~5^2~298 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=36ba07ba64f7da69706d11ef9330fe617e80591b;p=users%2Fjedix%2Flinux-maple.git SDP: BUG1087 - fixed recovery from failing rdma_create_qp() Signed-off-by: Amir Vadai --- diff --git a/drivers/infiniband/ulp/sdp/sdp_cma.c b/drivers/infiniband/ulp/sdp/sdp_cma.c index ef72509778d31..0bbdbcad6f802 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) -