diff options
author | Kuniyuki Iwashima <kuniyu@amazon.com> | 2022-07-06 16:40:03 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-07-08 12:10:34 +0100 |
commit | 73318c4b7dbd0e781aaababff17376b2894745c0 (patch) | |
tree | ab1e05b75bb9090148ce3c2473b9c3c1ccfd1f36 /net/ipv4/fib_trie.c | |
parent | 48d7ee321ea5182c6a70782aa186422a70e67e22 (diff) | |
download | lwn-73318c4b7dbd0e781aaababff17376b2894745c0.tar.gz lwn-73318c4b7dbd0e781aaababff17376b2894745c0.zip |
ipv4: Fix a data-race around sysctl_fib_sync_mem.
While reading sysctl_fib_sync_mem, it can be changed concurrently.
So, we need to add READ_ONCE() to avoid a data-race.
Fixes: 9ab948a91b2c ("ipv4: Allow amount of dirty memory from fib resizing to be controllable")
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/fib_trie.c')
-rw-r--r-- | net/ipv4/fib_trie.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index 2734c3af7e24..46e8a5125853 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c @@ -498,7 +498,7 @@ static void tnode_free(struct key_vector *tn) tn = container_of(head, struct tnode, rcu)->kv; } - if (tnode_free_size >= sysctl_fib_sync_mem) { + if (tnode_free_size >= READ_ONCE(sysctl_fib_sync_mem)) { tnode_free_size = 0; synchronize_rcu(); } |