Commit 08148001 authored by Eric Dumazet's avatar Eric Dumazet Committed by Paolo Abeni
Browse files

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



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>
parent cbc3a153
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -470,6 +470,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;

@@ -489,11 +493,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)