• Yuchung Cheng's avatar
    tcp: fix retrans timestamp on passive Fast Open · cd736d8b
    Yuchung Cheng authored
    Commit c7d13c8f ("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: c7d13c8f ("tcp: properly track retry time on passive Fast Open")
    Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
    Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    cd736d8b
tcp_input.c 188 KB