diff options
| -rw-r--r-- | net/ipv4/tcp_ipv4.c | 13 | ||||
| -rw-r--r-- | net/ipv4/tcp_output.c | 5 | ||||
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 2 | 
3 files changed, 7 insertions, 13 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 9dd5b34eb11..1ed230716d5 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -138,14 +138,6 @@ int tcp_twsk_unique(struct sock *sk, struct sock *sktw, void *twp)  }  EXPORT_SYMBOL_GPL(tcp_twsk_unique); -static int tcp_repair_connect(struct sock *sk) -{ -	tcp_connect_init(sk); -	tcp_finish_connect(sk, NULL); - -	return 0; -} -  /* This will initiate an outgoing connection. */  int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)  { @@ -250,10 +242,7 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)  	inet->inet_id = tp->write_seq ^ jiffies; -	if (likely(!tp->repair)) -		err = tcp_connect(sk); -	else -		err = tcp_repair_connect(sk); +	err = tcp_connect(sk);  	rt = NULL;  	if (err) diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 2798706cb06..8ac08557321 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -2987,6 +2987,11 @@ int tcp_connect(struct sock *sk)  	tcp_connect_init(sk); +	if (unlikely(tp->repair)) { +		tcp_finish_connect(sk, NULL); +		return 0; +	} +  	buff = alloc_skb_fclone(MAX_TCP_HEADER + 15, sk->sk_allocation);  	if (unlikely(buff == NULL))  		return -ENOBUFS; diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 6c0f2526f3f..6565cf55eb1 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -295,7 +295,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,  	if (err)  		goto late_failure; -	if (!tp->write_seq) +	if (!tp->write_seq && likely(!tp->repair))  		tp->write_seq = secure_tcpv6_sequence_number(np->saddr.s6_addr32,  							     np->daddr.s6_addr32,  							     inet->inet_sport,  |