]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
doc: Update the comparisons rule in rcu_dereference.txt
authorMichalis Kokologiannakis <mixaskok@gmail.com>
Mon, 20 Mar 2017 21:38:35 +0000 (22:38 +0100)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 12 Apr 2017 15:23:42 +0000 (08:23 -0700)
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>
Documentation/RCU/rcu_dereference.txt

index c0bf2441a2baf5f254ed64d6e4c117dda808fd2c..b2a613f16d747828e35fd182a0c9fe06c1107d0f 100644 (file)
@@ -138,6 +138,15 @@ o  Be very careful about comparing pointers obtained from
                This sort of comparison occurs frequently when scanning
                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
                that was initialized "a long time ago."  The reason
                this is safe is that even if misordering occurs, the