aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/secure_seq.c
diff options
context:
space:
mode:
authorKuniyuki Iwashima <[email protected]>2022-07-18 17:26:44 +0000
committerDavid S. Miller <[email protected]>2022-07-20 09:14:49 +0000
commit3666f666e99600518ab20982af04a078bbdad277 (patch)
tree1cd7759fdd31cddc102b72d376ba6af18abd6460 /net/core/secure_seq.c
parentudp: Fix a data-race around sysctl_udp_l3mdev_accept. (diff)
downloadkernel-3666f666e99600518ab20982af04a078bbdad277.tar.gz
kernel-3666f666e99600518ab20982af04a078bbdad277.zip
tcp: Fix data-races around sysctl knobs related to SYN option.
While reading these knobs, they can be changed concurrently. Thus, we need to add READ_ONCE() to their readers. - tcp_sack - tcp_window_scaling - tcp_timestamps Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Kuniyuki Iwashima <[email protected]> Signed-off-by: David S. Miller <[email protected]>
Diffstat (limited to 'net/core/secure_seq.c')
-rw-r--r--net/core/secure_seq.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/core/secure_seq.c b/net/core/secure_seq.c
index 5f85e01d4093..b0ff6153be62 100644
--- a/net/core/secure_seq.c
+++ b/net/core/secure_seq.c
@@ -64,7 +64,7 @@ u32 secure_tcpv6_ts_off(const struct net *net,
.daddr = *(struct in6_addr *)daddr,
};
- if (net->ipv4.sysctl_tcp_timestamps != 1)
+ if (READ_ONCE(net->ipv4.sysctl_tcp_timestamps) != 1)
return 0;
ts_secret_init();
@@ -120,7 +120,7 @@ EXPORT_SYMBOL(secure_ipv6_port_ephemeral);
#ifdef CONFIG_INET
u32 secure_tcp_ts_off(const struct net *net, __be32 saddr, __be32 daddr)
{
- if (net->ipv4.sysctl_tcp_timestamps != 1)
+ if (READ_ONCE(net->ipv4.sysctl_tcp_timestamps) != 1)
return 0;
ts_secret_init();