diff options
Diffstat (limited to 'net/ipv4/tcp_metrics.c')
| -rw-r--r-- | net/ipv4/tcp_metrics.c | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c index a501150deaa3..d58e672be31c 100644 --- a/net/ipv4/tcp_metrics.c +++ b/net/ipv4/tcp_metrics.c @@ -329,7 +329,7 @@ void tcp_update_metrics(struct sock *sk)  	int m;  	sk_dst_confirm(sk); -	if (net->ipv4.sysctl_tcp_nometrics_save || !dst) +	if (READ_ONCE(net->ipv4.sysctl_tcp_nometrics_save) || !dst)  		return;  	rcu_read_lock(); @@ -385,7 +385,7 @@ void tcp_update_metrics(struct sock *sk)  	if (tcp_in_initial_slowstart(tp)) {  		/* Slow start still did not finish. */ -		if (!net->ipv4.sysctl_tcp_no_ssthresh_metrics_save && +		if (!READ_ONCE(net->ipv4.sysctl_tcp_no_ssthresh_metrics_save) &&  		    !tcp_metric_locked(tm, TCP_METRIC_SSTHRESH)) {  			val = tcp_metric_get(tm, TCP_METRIC_SSTHRESH);  			if (val && (tcp_snd_cwnd(tp) >> 1) > val) @@ -401,7 +401,7 @@ void tcp_update_metrics(struct sock *sk)  	} else if (!tcp_in_slow_start(tp) &&  		   icsk->icsk_ca_state == TCP_CA_Open) {  		/* Cong. avoidance phase, cwnd is reliable. */ -		if (!net->ipv4.sysctl_tcp_no_ssthresh_metrics_save && +		if (!READ_ONCE(net->ipv4.sysctl_tcp_no_ssthresh_metrics_save) &&  		    !tcp_metric_locked(tm, TCP_METRIC_SSTHRESH))  			tcp_metric_set(tm, TCP_METRIC_SSTHRESH,  				       max(tcp_snd_cwnd(tp) >> 1, tp->snd_ssthresh)); @@ -418,7 +418,7 @@ void tcp_update_metrics(struct sock *sk)  			tcp_metric_set(tm, TCP_METRIC_CWND,  				       (val + tp->snd_ssthresh) >> 1);  		} -		if (!net->ipv4.sysctl_tcp_no_ssthresh_metrics_save && +		if (!READ_ONCE(net->ipv4.sysctl_tcp_no_ssthresh_metrics_save) &&  		    !tcp_metric_locked(tm, TCP_METRIC_SSTHRESH)) {  			val = tcp_metric_get(tm, TCP_METRIC_SSTHRESH);  			if (val && tp->snd_ssthresh > val) @@ -463,7 +463,7 @@ void tcp_init_metrics(struct sock *sk)  	if (tcp_metric_locked(tm, TCP_METRIC_CWND))  		tp->snd_cwnd_clamp = tcp_metric_get(tm, TCP_METRIC_CWND); -	val = net->ipv4.sysctl_tcp_no_ssthresh_metrics_save ? +	val = READ_ONCE(net->ipv4.sysctl_tcp_no_ssthresh_metrics_save) ?  	      0 : tcp_metric_get(tm, TCP_METRIC_SSTHRESH);  	if (val) {  		tp->snd_ssthresh = val; |