Message ID | 20200422021135.114561-1-weiyongjun1@huawei.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [net-next,v2] macvlan: silence RCU list debugging warning | expand |
From: Wei Yongjun <weiyongjun1@huawei.com> Date: Wed, 22 Apr 2020 10:11:35 +0800 > macvlan_hash_lookup() uses list_for_each_entry_rcu() for traversing > should either under RCU in fast path or the protection of rtnl_mutex. > > In the case of holding RTNL, we should add the corresponding lockdep > expression to silence the following false-positive warning: > > ============================= > WARNING: suspicious RCU usage > 5.7.0-rc1-next-20200416-00003-ga3b8d28bc #1 Not tainted > ----------------------------- > drivers/net/macvlan.c:126 RCU-list traversed in non-reader section!! > > Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> Applied, thanks Wei.
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index e7289d67268f..654c1fa11826 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -123,7 +123,8 @@ static struct macvlan_dev *macvlan_hash_lookup(const struct macvlan_port *port, struct macvlan_dev *vlan; u32 idx = macvlan_eth_hash(addr); - hlist_for_each_entry_rcu(vlan, &port->vlan_hash[idx], hlist) { + hlist_for_each_entry_rcu(vlan, &port->vlan_hash[idx], hlist, + lockdep_rtnl_is_held()) { if (ether_addr_equal_64bits(vlan->dev->dev_addr, addr)) return vlan; }
macvlan_hash_lookup() uses list_for_each_entry_rcu() for traversing should either under RCU in fast path or the protection of rtnl_mutex. In the case of holding RTNL, we should add the corresponding lockdep expression to silence the following false-positive warning: ============================= WARNING: suspicious RCU usage 5.7.0-rc1-next-20200416-00003-ga3b8d28bc #1 Not tainted ----------------------------- drivers/net/macvlan.c:126 RCU-list traversed in non-reader section!! Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> --- v1 - > v2: update the changelogs --- drivers/net/macvlan.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)