From d37ffcc7d5a01fc1b59426d922c08a7156b71e17 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Wed, 8 Sep 2010 14:15:32 -0700 Subject: [PATCH] --- yaml --- r: 214354 b: refs/heads/master c: a6e0fc8514d41dfdd98b1d15cacc432cf040f8af h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/linux/rtnetlink.h | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 6947a31579cf..ae3026f5a2af 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a7a4f1c1a52912eb8b3bd4d8f628d83a8b5d69dd +refs/heads/master: a6e0fc8514d41dfdd98b1d15cacc432cf040f8af diff --git a/trunk/include/linux/rtnetlink.h b/trunk/include/linux/rtnetlink.h index 58d44491880f..263690d991a8 100644 --- a/trunk/include/linux/rtnetlink.h +++ b/trunk/include/linux/rtnetlink.h @@ -749,6 +749,17 @@ extern int rtnl_is_locked(void); extern int lockdep_rtnl_is_held(void); #endif /* #ifdef CONFIG_PROVE_LOCKING */ +/** + * rcu_dereference_rtnl - rcu_dereference with debug checking + * @p: The pointer to read, prior to dereferencing + * + * Do an rcu_dereference(p), but check caller either holds rcu_read_lock() + * or RTNL + */ +#define rcu_dereference_rtnl(p) \ + rcu_dereference_check(p, rcu_read_lock_held() || \ + lockdep_rtnl_is_held()) + extern void rtnetlink_init(void); extern void __rtnl_unlock(void);