summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2010-04-15 01:13:29 +0200
committerDavid S. Miller <davem@davemloft.net>2010-04-15 01:13:29 +0200
commit4eaa0e3c869acd5dbc7c2e3818a9ae9cbf221d27 (patch)
tree7583f360508bd0a01b666fb711d7d1c6e30e2ea9
parenttun: orphan an skb on tx (diff)
downloadlinux-4eaa0e3c869acd5dbc7c2e3818a9ae9cbf221d27.tar.xz
linux-4eaa0e3c869acd5dbc7c2e3818a9ae9cbf221d27.zip
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>
-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 59a838795e3e..c98f115fb0fd 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)