diff options
Diffstat (limited to 'net/rds/tcp_connect.c')
| -rw-r--r-- | net/rds/tcp_connect.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/net/rds/tcp_connect.c b/net/rds/tcp_connect.c index 973109c7b8e8..5cb16875c460 100644 --- a/net/rds/tcp_connect.c +++ b/net/rds/tcp_connect.c @@ -79,7 +79,8 @@ int rds_tcp_conn_connect(struct rds_connection *conn)  	struct sockaddr_in src, dest;  	int ret; -	ret = sock_create(PF_INET, SOCK_STREAM, IPPROTO_TCP, &sock); +	ret = sock_create_kern(rds_conn_net(conn), PF_INET, +			       SOCK_STREAM, IPPROTO_TCP, &sock);  	if (ret < 0)  		goto out; @@ -111,10 +112,12 @@ int rds_tcp_conn_connect(struct rds_connection *conn)  	rdsdebug("connect to address %pI4 returned %d\n", &conn->c_faddr, ret);  	if (ret == -EINPROGRESS)  		ret = 0; -	if (ret == 0) +	if (ret == 0) { +		rds_tcp_keepalive(sock);  		sock = NULL; -	else +	} else {  		rds_tcp_restore_callbacks(sock, conn->c_transport_data); +	}  out:  	if (sock)  |