summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorKuniyuki Iwashima <kuniyu@amazon.com>2022-07-06 16:40:00 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-07-21 21:09:27 +0200
commit2934b8b53d899924f30c51372dfd39b1da9be6b1 (patch)
tree772ee8a20e12d7b98b45ea90f037ef90ef453957 /include/net
parentb5a8ebbc11df5047f9bef7bf6edb9d02f7d9baff (diff)
downloadlinux-stable-2934b8b53d899924f30c51372dfd39b1da9be6b1.tar.gz
linux-stable-2934b8b53d899924f30c51372dfd39b1da9be6b1.tar.bz2
linux-stable-2934b8b53d899924f30c51372dfd39b1da9be6b1.zip
net: Fix data-races around sysctl_mem.
[ Upstream commit 310731e2f1611d1d13aae237abcf8e66d33345d5 ] While reading .sysctl_mem, it can be changed concurrently. So, we need to add READ_ONCE() to avoid data-races. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/sock.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/net/sock.h b/include/net/sock.h
index 7d3a4c2eea95..98946f90781d 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -1381,7 +1381,7 @@ void __sk_mem_reclaim(struct sock *sk, int amount);
/* sysctl_mem values are in pages, we convert them in SK_MEM_QUANTUM units */
static inline long sk_prot_mem_limits(const struct sock *sk, int index)
{
- long val = sk->sk_prot->sysctl_mem[index];
+ long val = READ_ONCE(sk->sk_prot->sysctl_mem[index]);
#if PAGE_SIZE > SK_MEM_QUANTUM
val <<= PAGE_SHIFT - SK_MEM_QUANTUM_SHIFT;