mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-09-26 18:16:26 +00:00
Fix RCU list iterator use of 'rcu_dereference()'
The RCU iterators used 'rcu_dereference()' on an already-fetched RCU pointer value, which defeats the whole point of the exercise. When we dereference a pointer protected by RCU, we need to make sure that we only fetch the value _once_, because if the compiler ends up re-loading it due to register pressure, the newly reloaded value could be different from the previously fetched one, and you get inconsistent results. Cleaned-up, fixed, and the pointless list_for_each_safe_rcu #define deleted by Paul Kenney. Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
3925e6fc1f
commit
cc216c5d42
1 changed files with 15 additions and 33 deletions
Loading…
Add table
Add a link
Reference in a new issue