]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: fix retrans timestamp on passive Fast Open
authorYuchung Cheng <ycheng@google.com>
Mon, 13 May 2019 17:32:05 +0000 (10:32 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 May 2019 22:17:49 +0000 (15:17 -0700)
commit524b8da3f039598dcddac867920d841feb54649c
treeac556ca1e6b7480488f57a773a8c1d5ac456a1a0
parentf4ca8ff9599d4faf972e318cb06dd6bd29060e5e
tcp: fix retrans timestamp on passive Fast Open

Commit 8c1613acf4d0 ("tcp: properly track retry time on
passive Fast Open") sets the start of SYNACK retransmission
time on passive Fast Open in "retrans_stamp". However the
timestamp is not reset upon the handshake has completed. As a
result, future data packet retransmission may not update it in
tcp_retransmit_skb(). This may lead to socket aborting earlier
unexpectedly by retransmits_timed_out() since retrans_stamp remains
the SYNACK rtx time.

This bug only manifests on passive TFO sender that a) suffered
SYNACK timeout and then b) stalls on very first loss recovery. Any
successful loss recovery would reset the timestamp to avoid this
issue.

Fixes: 8c1613acf4d0 ("tcp: properly track retry time on passive Fast Open")
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c