net: Fix data-races around sysctl_mem.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2134161
Tested: LNST, Tier1

Upstream commit:
commit 310731e2f1611d1d13aae237abcf8e66d33345d5
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Wed Jul 6 16:40:00 2022 -0700

    net: Fix data-races around sysctl_mem.

    While reading .sysctl_mem, it can be changed concurrently.
    So, we need to add READ_ONCE() to avoid data-races.

    Fixes: 1da177e4c3 ("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: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
Paolo Abeni 2022-10-12 18:44:29 +02:00
parent 7a449a8bc9
commit a99b2cb4eb
1 changed files with 1 additions and 1 deletions

View File

@ -1518,7 +1518,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;