Message ID | 20221108125254.688234-1-nashuiliang@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v1] net: macvlan: Use built-in RCU list checking | expand |
Hello, On Tue, 2022-11-08 at 20:52 +0800, Chuang Wang wrote: > hlist_for_each_entry_rcu() has built-in RCU and lock checking. > > Pass cond argument to hlist_for_each_entry_rcu() to silence false > lockdep warning when CONFIG_PROVE_RCU_LIST is enabled. > > Execute as follow: > > ip link add link eth0 type macvlan mode source macaddr add <MAC-ADDR> > > The rtnl_lock is held when macvlan_hash_lookup_source() or > macvlan_fill_info_macaddr() are called in the non-RCU read side section. > So, pass lockdep_rtnl_is_held() to silence false lockdep warning. > > Signed-off-by: Chuang Wang <nashuiliang@gmail.com> The patch LGTM, but IMHO this should target the -net tree, as it's addressing an issue bothering people. Can you please re-submit, specifying the target tree into the subj and including a suitable Fixes tag? Thanks! Paolo
Hi, On Thu, Nov 10, 2022 at 6:57 PM Paolo Abeni <pabeni@redhat.com> wrote: > > Hello, > > On Tue, 2022-11-08 at 20:52 +0800, Chuang Wang wrote: > > hlist_for_each_entry_rcu() has built-in RCU and lock checking. > > > > Pass cond argument to hlist_for_each_entry_rcu() to silence false > > lockdep warning when CONFIG_PROVE_RCU_LIST is enabled. > > > > Execute as follow: > > > > ip link add link eth0 type macvlan mode source macaddr add <MAC-ADDR> > > > > The rtnl_lock is held when macvlan_hash_lookup_source() or > > macvlan_fill_info_macaddr() are called in the non-RCU read side section. > > So, pass lockdep_rtnl_is_held() to silence false lockdep warning. > > > > Signed-off-by: Chuang Wang <nashuiliang@gmail.com> > > The patch LGTM, but IMHO this should target the -net tree, as it's > addressing an issue bothering people. Sorry, can I sincerely ask if the -net tree is git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git or git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git ? > > Can you please re-submit, specifying the target tree into the subj and > including a suitable Fixes tag? ok, I will add a suitable Fixed tag and resubmit. Thanks. > > Thanks! > > Paolo > >
On Thu, 10 Nov 2022 19:27:52 +0800 Chuang W wrote: > > The patch LGTM, but IMHO this should target the -net tree, as it's > > addressing an issue bothering people. > > Sorry, can I sincerely ask if the -net tree is > git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git or This one, but you should also put the name in the subject, like this: [PATCH net v2] net: macvlan: Use built-in RCU list checking > git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git ?
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index c58fea63be7d..deb7929004a7 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -141,7 +141,7 @@ static struct macvlan_source_entry *macvlan_hash_lookup_source( u32 idx = macvlan_eth_hash(addr); struct hlist_head *h = &vlan->port->vlan_source_hash[idx]; - hlist_for_each_entry_rcu(entry, h, hlist) { + hlist_for_each_entry_rcu(entry, h, hlist, lockdep_rtnl_is_held()) { if (ether_addr_equal_64bits(entry->addr, addr) && entry->vlan == vlan) return entry; @@ -1645,7 +1645,7 @@ static int macvlan_fill_info_macaddr(struct sk_buff *skb, struct hlist_head *h = &vlan->port->vlan_source_hash[i]; struct macvlan_source_entry *entry; - hlist_for_each_entry_rcu(entry, h, hlist) { + hlist_for_each_entry_rcu(entry, h, hlist, lockdep_rtnl_is_held()) { if (entry->vlan != vlan) continue; if (nla_put(skb, IFLA_MACVLAN_MACADDR, ETH_ALEN, entry->addr))
hlist_for_each_entry_rcu() has built-in RCU and lock checking. Pass cond argument to hlist_for_each_entry_rcu() to silence false lockdep warning when CONFIG_PROVE_RCU_LIST is enabled. Execute as follow: ip link add link eth0 type macvlan mode source macaddr add <MAC-ADDR> The rtnl_lock is held when macvlan_hash_lookup_source() or macvlan_fill_info_macaddr() are called in the non-RCU read side section. So, pass lockdep_rtnl_is_held() to silence false lockdep warning. Signed-off-by: Chuang Wang <nashuiliang@gmail.com> --- v0 -> v1: - fix typo drivers/net/macvlan.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)