Jiri Slaby a0c7bc
From: Eric Dumazet <edumazet@google.com>
Jiri Slaby a0c7bc
Date: Fri, 31 Jan 2020 09:14:47 -0800
Jiri Slaby a0c7bc
Subject: tcp: clear tp->total_retrans in tcp_disconnect()
Jiri Slaby a0c7bc
Git-commit: c13c48c00a6bc1febc73902505bdec0967bd7095
Jiri Slaby a0c7bc
Patch-mainline: 5.6-rc1
Jiri Slaby a0c7bc
References: networking-stable-20_02_05
Jiri Slaby a0c7bc
Jiri Slaby a0c7bc
total_retrans needs to be cleared in tcp_disconnect().
Jiri Slaby a0c7bc
Jiri Slaby a0c7bc
tcp_disconnect() is rarely used, but it is worth fixing it.
Jiri Slaby a0c7bc
Jiri Slaby a0c7bc
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Jiri Slaby a0c7bc
Signed-off-by: Eric Dumazet <edumazet@google.com>
Jiri Slaby a0c7bc
Cc: SeongJae Park <sjpark@amazon.de>
Jiri Slaby a0c7bc
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Jiri Slaby a0c7bc
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby a0c7bc
---
Jiri Slaby a0c7bc
 net/ipv4/tcp.c |    1 +
Jiri Slaby a0c7bc
 1 file changed, 1 insertion(+)
Jiri Slaby a0c7bc
Jiri Slaby a0c7bc
--- a/net/ipv4/tcp.c
Jiri Slaby a0c7bc
+++ b/net/ipv4/tcp.c
Jiri Slaby a0c7bc
@@ -2620,6 +2620,7 @@ int tcp_disconnect(struct sock *sk, int
Jiri Slaby a0c7bc
 	tcp_set_ca_state(sk, TCP_CA_Open);
Jiri Slaby a0c7bc
 	tp->is_sack_reneg = 0;
Jiri Slaby a0c7bc
 	tcp_clear_retrans(tp);
Jiri Slaby a0c7bc
+	tp->total_retrans = 0;
Jiri Slaby a0c7bc
 	inet_csk_delack_init(sk);
Jiri Slaby a0c7bc
 	/* Initialize rcv_mss to TCP_MIN_MSS to avoid division by 0
Jiri Slaby a0c7bc
 	 * issue in __tcp_select_window()