summaryrefslogtreecommitdiff
path: root/net/ipv4/fib_trie.c
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2010-04-14 23:13:29 (GMT)
committerDavid S. Miller <davem@davemloft.net>2010-04-14 23:13:29 (GMT)
commit4eaa0e3c869acd5dbc7c2e3818a9ae9cbf221d27 (patch)
tree7583f360508bd0a01b666fb711d7d1c6e30e2ea9 /net/ipv4/fib_trie.c
parent0110d6f22f392f976e84ab49da1b42f85b64a3c5 (diff)
downloadlinux-4eaa0e3c869acd5dbc7c2e3818a9ae9cbf221d27.tar.xz
fib: suppress lockdep-RCU false positive in FIB trie.
Followup of commit 634a4b20 Allow tnode_get_child_rcu() to be called either under rcu_read_lock() protection or with RTNL held. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/fib_trie.c')
-rw-r--r--net/ipv4/fib_trie.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
index 59a8387..c98f115 100644
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
@@ -209,7 +209,9 @@ static inline struct node *tnode_get_child_rcu(struct tnode *tn, unsigned int i)
{
struct node *ret = tnode_get_child(tn, i);
- return rcu_dereference(ret);
+ return rcu_dereference_check(ret,
+ rcu_read_lock_held() ||
+ lockdep_rtnl_is_held());
}
static inline int tnode_child_length(const struct tnode *tn)