diff options
Diffstat (limited to 'net/ipv4/tcp_input.c')
| -rw-r--r-- | net/ipv4/tcp_input.c | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 2c2b13a999e..609ff98aeb4 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -5313,11 +5313,6 @@ static bool tcp_validate_incoming(struct sock *sk, struct sk_buff *skb,  		goto discard;  	} -	/* ts_recent update must be made after we are sure that the packet -	 * is in window. -	 */ -	tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); -  	/* step 3: check security and precedence [ignored] */  	/* step 4: Check for a SYN @@ -5552,6 +5547,11 @@ step5:  	if (th->ack && tcp_ack(sk, skb, FLAG_SLOWPATH) < 0)  		goto discard; +	/* ts_recent update must be made after we are sure that the packet +	 * is in window. +	 */ +	tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); +  	tcp_rcv_rtt_measure_ts(sk, skb);  	/* Process urgent data. */ @@ -6130,6 +6130,11 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,  	} else  		goto discard; +	/* ts_recent update must be made after we are sure that the packet +	 * is in window. +	 */ +	tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); +  	/* step 6: check the URG bit */  	tcp_urg(sk, skb, th);  |