tcp_connect() does :

     tp->retrans_stamp = tcp_time_stamp(tp);

When 3WHS completes, we need to clear retrans_stamp otherwise
various things can break.

This bug became more visible after commit b701a99e431d ("tcp: Add
tcp_clamp_rto_to_user_timeout() helper to improve accuracy"), but
predates git history.

Signed-off-by: Eric Dumazet <eduma...@google.com>
Acked-by: Soheil Hassas Yeganeh <soh...@google.com>
---
 net/ipv4/tcp_input.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 
a9d9555a973fed4e3562a57d1a2cdadfef40dae4..6c1c79a34ea0b694d0259b3f39ac1481b81dac5a
 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -5680,6 +5680,7 @@ void tcp_finish_connect(struct sock *sk, struct sk_buff 
*skb)
         * packet.
         */
        tp->lsndtime = tcp_jiffies32;
+       tp->retrans_stamp = 0;
 
        if (sock_flag(sk, SOCK_KEEPOPEN))
                inet_csk_reset_keepalive_timer(sk, keepalive_time_when(tp));
-- 
2.20.0.405.gbc1bbc6f85-goog

Reply via email to