rcu: Not necessary to pass rcu_read_lock_held() to rcu_dereference_protected()
authorMichal Hocko <mhocko@suse.cz>
Fri, 8 Jul 2011 15:48:24 +0000 (08:48 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 29 Sep 2011 04:38:23 +0000 (21:38 -0700)
Since ca5ecddf (rcu: define __rcu address space modifier for sparse)
rcu_dereference_check() use rcu_read_lock_held() as a part of condition
automatically.  Therefore, callers of rcu_dereference_check() no longer
need to pass rcu_read_lock_held() to rcu_dereference_check().

Signed-off-by: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Documentation/RCU/lockdep.txt

index d7a49b2..4998c63 100644 (file)
@@ -48,13 +48,11 @@ checking of rcu_dereference() primitives:
                value of the pointer itself, for example, against NULL.
 
 The rcu_dereference_check() check expression can be any boolean
-expression, but would normally include one of the rcu_read_lock_held()
-family of functions and a lockdep expression.  However, any boolean
-expression can be used.  For a moderately ornate example, consider
-the following:
+expression, but would normally include a lockdep expression.  However,
+any boolean expression can be used.  For a moderately ornate example,
+consider the following:
 
        file = rcu_dereference_check(fdt->fd[fd],
-                                    rcu_read_lock_held() ||
                                     lockdep_is_held(&files->file_lock) ||
                                     atomic_read(&files->count) == 1);
 
@@ -62,7 +60,7 @@ This expression picks up the pointer "fdt->fd[fd]" in an RCU-safe manner,
 and, if CONFIG_PROVE_RCU is configured, verifies that this expression
 is used in:
 
-1.     An RCU read-side critical section, or
+1.     An RCU read-side critical section (implicit), or
 2.     with files->file_lock held, or
 3.     on an unshared files_struct.