aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2010-02-22 20:04:47 -0500
committerIngo Molnar <mingo@elte.hu>2010-02-25 03:41:01 -0500
commit0632eb3d7563d6a76d49a3860b6352d800c92854 (patch)
treed998e6d4292a21a91ba1333ffdb1866daf1cfee2 /include
parentc26d34a5858f96a564c45048bf5f09319d2abad1 (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.h4
-rw-r--r--include/linux/rcupdate.h4
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
538extern 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