Message ID | 20200420115930.135509-1-weiyongjun1@huawei.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | [net-next] macvlan: silence RCU list debugging warning | expand |
On 4/20/20 4:59 AM, Wei Yongjun wrote: > macvlan_hash_lookup() uses list_for_each_entry_rcu() for traversing > outside of an RCU read side critical section but under the protection > of rtnl_mutex. Hence, add the corresponding lockdep expression to > silence the following false-positive warning: > This changelog is misleading. macvlan_hash_lookup() _can_ be used under RCU only, in its fast path. So you can not claim that it is run with RTNL held. Please be precise in the changelogs Thanks. > ============================= > 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> > --- > drivers/net/macvlan.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > 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; > } >
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 outside of an RCU read side critical section but under the protection of rtnl_mutex. Hence, 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> --- drivers/net/macvlan.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)