diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-04-14 16:13:29 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-04-14 16:13:29 -0700 |
commit | 4eaa0e3c869acd5dbc7c2e3818a9ae9cbf221d27 (patch) | |
tree | 7583f360508bd0a01b666fb711d7d1c6e30e2ea9 /net/ipv4 | |
parent | 0110d6f22f392f976e84ab49da1b42f85b64a3c5 (diff) |
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')
-rw-r--r-- | net/ipv4/fib_trie.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index 59a838795e3..c98f115fb0f 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) |