diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2010-02-22 20:04:47 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-02-25 03:41:01 -0500 |
commit | 0632eb3d7563d6a76d49a3860b6352d800c92854 (patch) | |
tree | d998e6d4292a21a91ba1333ffdb1866daf1cfee2 /include | |
parent | c26d34a5858f96a564c45048bf5f09319d2abad1 (diff) |
rcu: Integrate rcu_dereference_check() message into lockdep
Make rcu_dereference_check() print the list of held locks in
addition to the stack dump to ease debugging.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: laijs@cn.fujitsu.com
Cc: dipankar@in.ibm.com
Cc: mathieu.desnoyers@polymtl.ca
Cc: josh@joshtriplett.org
Cc: dvhltc@us.ibm.com
Cc: niv@us.ibm.com
Cc: peterz@infradead.org
Cc: rostedt@goodmis.org
Cc: Valdis.Kletnieks@vt.edu
Cc: dhowells@redhat.com
LKML-Reference: <1266887105-1528-3-git-send-email-paulmck@linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/lockdep.h | 4 | ||||
-rw-r--r-- | include/linux/rcupdate.h | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 9ccf0e286b2a..10206a87da19 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h | |||
@@ -534,4 +534,8 @@ do { \ | |||
534 | # define might_lock_read(lock) do { } while (0) | 534 | # define might_lock_read(lock) do { } while (0) |
535 | #endif | 535 | #endif |
536 | 536 | ||
537 | #ifdef CONFIG_PROVE_RCU | ||
538 | extern void lockdep_rcu_dereference(const char *file, const int line); | ||
539 | #endif | ||
540 | |||
537 | #endif /* __LINUX_LOCKDEP_H */ | 541 | #endif /* __LINUX_LOCKDEP_H */ |
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 839d296a7ac0..1a4de31bd7b4 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -182,8 +182,8 @@ static inline int rcu_read_lock_sched_held(void) | |||
182 | */ | 182 | */ |
183 | #define rcu_dereference_check(p, c) \ | 183 | #define rcu_dereference_check(p, c) \ |
184 | ({ \ | 184 | ({ \ |
185 | if (debug_locks) \ | 185 | if (debug_locks && !(c)) \ |
186 | WARN_ON_ONCE(!(c)); \ | 186 | lockdep_rcu_dereference(__FILE__, __LINE__); \ |
187 | rcu_dereference_raw(p); \ | 187 | rcu_dereference_raw(p); \ |
188 | }) | 188 | }) |
189 | 189 | ||