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