mirror of
https://github.com/torvalds/linux.git
synced 2026-07-29 18:51:21 +02:00
rcu: Document rcu_access_pointer() feeding into cmpxchg()
This commit documents the rcu_access_pointer() use case for fetching the old value of an RCU-protected pointer within a lockless updater for use by an atomic cmpxchg() operation. Reviewed-by: Frederic Weisbecker <frederic@kernel.org> Reported-by: Maxim Mikityanskiy <maximmi@nvidia.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
This commit is contained in:
parent
d9b4d36b8c
commit
e6cb527255
|
|
@ -592,11 +592,13 @@ context_unsafe( \
|
|||
* lockdep checks for being in an RCU read-side critical section. This is
|
||||
* useful when the value of this pointer is accessed, but the pointer is
|
||||
* not dereferenced, for example, when testing an RCU-protected pointer
|
||||
* against NULL. Although rcu_access_pointer() may also be used in cases
|
||||
* where update-side locks prevent the value of the pointer from changing,
|
||||
* you should instead use rcu_dereference_protected() for this use case.
|
||||
* Within an RCU read-side critical section, there is little reason to
|
||||
* use rcu_access_pointer().
|
||||
* against NULL. Within an RCU read-side critical section, there is little
|
||||
* reason to use rcu_access_pointer(). Although rcu_access_pointer() may
|
||||
* also be used in cases where update-side locks prevent the value of the
|
||||
* pointer from changing, you should instead use rcu_dereference_protected()
|
||||
* for this use case. It is also permissible to use rcu_access_pointer()
|
||||
* within lockless updaters to obtain the old value for an atomic operation,
|
||||
* for example, for cmpxchg().
|
||||
*
|
||||
* It is usually best to test the rcu_access_pointer() return value
|
||||
* directly in order to avoid accidental dereferences being introduced
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user