aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuchung Cheng <[email protected]>2019-01-16 15:05:28 -0800
committerDavid S. Miller <[email protected]>2019-01-17 15:12:26 -0800
commit88f8598d0a302a08380eadefd09b9f5cb1c4c428 (patch)
treef31cbddb0cc70e708a7c6e27107410fd47685a49
parent9b420eff9fcf69a85034c1e657a861de575c96e1 (diff)
tcp: exit if nothing to retransmit on RTO timeout
Previously TCP only warns if its RTO timer fires and the retransmission queue is empty, but it'll cause null pointer reference later on. It's better to avoid such catastrophic failure and simply exit with a warning. Signed-off-by: Yuchung Cheng <[email protected]> Signed-off-by: Eric Dumazet <[email protected]> Reviewed-by: Neal Cardwell <[email protected]> Reviewed-by: Soheil Hassas Yeganeh <[email protected]> Signed-off-by: David S. Miller <[email protected]>
-rw-r--r--net/ipv4/tcp_timer.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index 71a29e9c0620..e7d09e3705b8 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -443,10 +443,8 @@ void tcp_retransmit_timer(struct sock *sk)
*/
return;
}
- if (!tp->packets_out)
- goto out;
-
- WARN_ON(tcp_rtx_queue_empty(sk));
+ if (!tp->packets_out || WARN_ON_ONCE(tcp_rtx_queue_empty(sk)))
+ return;
tp->tlp_high_seq = 0;