doc: Update the comparisons rule in rcu_dereference.txt
When an RCU-protected pointer is fetched but never dereferenced rcu_access_pointer() should be used in place of rcu_dereference(). This commit explicitly records this very fact in Documentation/ RCU/rcu_dereference.txt, in order to prevent the usage of rcu_dereference() in comparisons. Signed-off-by: Michalis Kokologiannakis <mixaskok@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
066bb1c84a
commit
93728af0a1
@ -138,6 +138,15 @@ o Be very careful about comparing pointers obtained from
|
|||||||
This sort of comparison occurs frequently when scanning
|
This sort of comparison occurs frequently when scanning
|
||||||
RCU-protected circular linked lists.
|
RCU-protected circular linked lists.
|
||||||
|
|
||||||
|
Note that if checks for being within an RCU read-side
|
||||||
|
critical section are not required and the pointer is never
|
||||||
|
dereferenced, rcu_access_pointer() should be used in place
|
||||||
|
of rcu_dereference(). The rcu_access_pointer() primitive
|
||||||
|
does not require an enclosing read-side critical section,
|
||||||
|
and also omits the smp_read_barrier_depends() included in
|
||||||
|
rcu_dereference(), which in turn should provide a small
|
||||||
|
performance gain in some CPUs (e.g., the DEC Alpha).
|
||||||
|
|
||||||
o The comparison is against a pointer that references memory
|
o The comparison is against a pointer that references memory
|
||||||
that was initialized "a long time ago." The reason
|
that was initialized "a long time ago." The reason
|
||||||
this is safe is that even if misordering occurs, the
|
this is safe is that even if misordering occurs, the
|
||||||
|
Loading…
Reference in New Issue
Block a user