Message ID | 20220715171755.38497-12-kuniyu@amazon.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 55be873695ed8912eb77ff46d1d1cadf028bd0f3 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | sysctl: Fix data-races around ipv4_net_table (Round 3). | expand |
diff --git a/include/net/tcp.h b/include/net/tcp.h index b78f1d60be33..504077ae5da9 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -2027,7 +2027,7 @@ void __tcp_v4_send_check(struct sk_buff *skb, __be32 saddr, __be32 daddr); static inline u32 tcp_notsent_lowat(const struct tcp_sock *tp) { struct net *net = sock_net((struct sock *)tp); - return tp->notsent_lowat ?: net->ipv4.sysctl_tcp_notsent_lowat; + return tp->notsent_lowat ?: READ_ONCE(net->ipv4.sysctl_tcp_notsent_lowat); } bool tcp_stream_memory_free(const struct sock *sk, int wake);
While reading sysctl_tcp_notsent_lowat, it can be changed concurrently. Thus, we need to add READ_ONCE() to its reader. Fixes: c9bee3b7fdec ("tcp: TCP_NOTSENT_LOWAT socket option") Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> --- include/net/tcp.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)