From: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date: Mon, 22 Mar 2010 01:01:05 +0000 (-0700)
Subject: net: suppress lockdep-RCU false positive in FIB trie.
X-Git-Tag: firefly_0821_release~9833^2~2199^2~186
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=634a4b2038a6eba4c211fb906fa2f6ec9a4bbfc7;p=firefly-linux-kernel-4.4.55.git

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>
---

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;