Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3902c0e authored by Eric Dumazet's avatar Eric Dumazet Committed by Greg Kroah-Hartman
Browse files

tcp_metrics: properly set tp->snd_ssthresh in tcp_init_metrics()



[ Upstream commit 081480014a64a69d901f8ef1ffdd56d6085cf87e ]

We need to set tp->snd_ssthresh to TCP_INFINITE_SSTHRESH
in the case tcp_get_metrics() fails for some reason.

Fixes: 9ad7c049 ("tcp: RFC2988bis + taking RTT sample from 3WHS for the passive open side")
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent b78f2b77
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -466,6 +466,10 @@ void tcp_init_metrics(struct sock *sk)
	u32 val, crtt = 0; /* cached RTT scaled by 8 */

	sk_dst_confirm(sk);
	/* ssthresh may have been reduced unnecessarily during.
	 * 3WHS. Restore it back to its initial default.
	 */
	tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
	if (!dst)
		goto reset;

@@ -484,11 +488,6 @@ void tcp_init_metrics(struct sock *sk)
		tp->snd_ssthresh = val;
		if (tp->snd_ssthresh > tp->snd_cwnd_clamp)
			tp->snd_ssthresh = tp->snd_cwnd_clamp;
	} else {
		/* ssthresh may have been reduced unnecessarily during.
		 * 3WHS. Restore it back to its initial default.
		 */
		tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
	}
	val = tcp_metric_get(tm, TCP_METRIC_REORDERING);
	if (val && tp->reordering != val)