On 2/25/19 11:31 PM, Eric Dumazet wrote:
> On 02/25/2019 03:21 PM, Dmitry Safonov wrote:
>> Well, sure - but it seems confusing that rtnl_unregister() will require
>> synchronize_rcu(), while rtnl_unregister_all() will not.
> 
> rtnl_unregister_all() is a different beast, since it removes the whole 
> rtnl_msg_handlers[protocol]
> 
> rtnl_unregister() only removes a subset, with different usages.
> 
>> And I thought no one would care about another synchronize_rcu() in exit
>> path.
> 
> We definitely care about things be done properly.
> 
> If synchronize_rcu() is needed there, be it, but kfree_rcu() seems to be fine.
> 
> In any case, I believe you need to more carefully explain what is the problem 
> here,
> because I could not really see it.

Ugh, sorry - it seems that I haven't had enough coffee today.

I've read again rtnetlink_rcv_msg(), who is the only user of
rtnl_msg_handlers[] under read_lock, and it calls try_module_get(owner).

Sorry for the noise,
          Dmitry

Reply via email to