]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
SDP: BUG1087 - fixed recovery from failing rdma_create_qp()
authorAmir Vadai <amirv@mellanox.co.il>
Mon, 8 Dec 2008 15:09:01 +0000 (17:09 +0200)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:04:22 +0000 (05:04 -0700)
Signed-off-by: Amir Vadai <amirv@mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp_cma.c

index ef72509778d31656478e7078eedcc691a1e49169..0bbdbcad6f802d730b1de65bd20854fe2425bae4 100644 (file)
@@ -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) -