OSDN Git Service

Merge branch 'net_rwsem-fixes'
authorDavid S. Miller <davem@davemloft.net>
Sun, 1 Apr 2018 02:24:58 +0000 (22:24 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sun, 1 Apr 2018 02:24:58 +0000 (22:24 -0400)
Kirill Tkhai says:

====================
net_rwsem fixes

there is wext_netdev_notifier_call()->wireless_nlevent_flush()
netdevice notifier, which takes net_rwsem, so we can't take
net_rwsem in {,un}register_netdevice_notifier().

Since {,un}register_netdevice_notifier() is executed under
pernet_ops_rwsem, net_namespace_list can't change, while we
holding it, so there is no need net_rwsem in these functions [1/2].

The same is in [2/2]. We make callers of __rtnl_link_unregister()
take pernet_ops_rwsem, and close the race with setup_net()
and cleanup_net(), so __rtnl_link_unregister() does not need it.
This also fixes the problem of that __rtnl_link_unregister() does
not see initializing and exiting nets.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

Trivial merge