diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
| -rw-r--r-- | net/ipv4/tcp_ipv4.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index fe9f604ed1e..3a25cf743f8 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -1470,9 +1470,13 @@ struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb,  		inet_csk(newsk)->icsk_ext_hdr_len = inet_opt->opt.optlen;  	newinet->inet_id = newtp->write_seq ^ jiffies; -	if (!dst && (dst = inet_csk_route_child_sock(sk, newsk, req)) == NULL) -		goto put_and_exit; - +	if (!dst) { +		dst = inet_csk_route_child_sock(sk, newsk, req); +		if (!dst) +			goto put_and_exit; +	} else { +		/* syncookie case : see end of cookie_v4_check() */ +	}  	sk_setup_caps(newsk, dst);  	tcp_mtup_init(newsk);  |