diff options
author | Mark Brown <broonie@kernel.org> | 2019-06-18 19:12:47 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-06-18 19:12:47 +0100 |
commit | e1d700f7c94e755106749411706a38e39a93404b (patch) | |
tree | b1230cb7eba5a4ef28ed2cd2527d9ac78f06cc00 /net/ipv4/tcp_input.c | |
parent | ba576a6232dc06605f4edfaeea9b526ba7724f84 (diff) | |
parent | d1fdb6d8f6a4109a4263176c84b899076a5f8008 (diff) | |
download | talos-op-linux-e1d700f7c94e755106749411706a38e39a93404b.tar.gz talos-op-linux-e1d700f7c94e755106749411706a38e39a93404b.zip |
Merge tag 'v5.2-rc4' into regulator-5.3
Linux 5.2-rc4
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 20f6fac5882e..08a477e74cf3 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -3791,6 +3791,8 @@ void tcp_parse_options(const struct net *net, length--; continue; default: + if (length < 2) + return; opsize = *ptr++; if (opsize < 2) /* "silly options" */ return; @@ -6024,6 +6026,9 @@ reset_and_undo: static void tcp_rcv_synrecv_state_fastopen(struct sock *sk) { tcp_try_undo_loss(sk, false); + + /* Reset rtx states to prevent spurious retransmits_timed_out() */ + tcp_sk(sk)->retrans_stamp = 0; inet_csk(sk)->icsk_retransmits = 0; /* Once we leave TCP_SYN_RECV or TCP_FIN_WAIT_1, |