diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2010-03-22 04:01:05 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-03-22 04:01:05 +0300 |
commit | 634a4b2038a6eba4c211fb906fa2f6ec9a4bbfc7 (patch) | |
tree | 69ef8d5afc51d632db7744d94f4de0224e627104 /net | |
parent | af98441397227a5a4f212cd48710eea72a14dbdb (diff) | |
download | linux-634a4b2038a6eba4c211fb906fa2f6ec9a4bbfc7.tar.xz |
net: suppress lockdep-RCU false positive in FIB trie.
Allow fib_find_node() to be called either under rcu_read_lock()
protection or with RTNL held.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-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 af5d89792860..01ef8ba9025c 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c @@ -961,7 +961,9 @@ fib_find_node(struct trie *t, u32 key) struct node *n; pos = 0; - n = rcu_dereference(t->trie); + n = rcu_dereference_check(t->trie, + rcu_read_lock_held() || + lockdep_rtnl_is_held()); while (n != NULL && NODE_TYPE(n) == T_TNODE) { tn = (struct tnode *) n; |