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