On 3/25/21 5:16 PM, Taehee Yoo wrote: > The ifmcaddr6 has been protected by inet6_dev->lock(rwlock) so that > the critical section is atomic context. In order to switch this context, > changing locking is needed. The ifmcaddr6 actually already protected by > RTNL So if it's converted to use RCU, its control path context can be > switched to sleepable. > I do not really understand the changelog. You wanted to convert from RCU to RTNL, right ? Also : > @@ -571,13 +573,9 @@ int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf, > if (!ipv6_addr_is_multicast(group)) > return -EINVAL; > > - rcu_read_lock(); > - idev = ip6_mc_find_dev_rcu(net, group, gsf->gf_interface); > - > - if (!idev) { > - rcu_read_unlock(); > + idev = ip6_mc_find_dev_rtnl(net, group, gsf->gf_interface); > + if (!idev) > return -ENODEV; > - } > I do not see RTNL being acquired before entering ip6_mc_msfget()