diff options
author | David S. Miller <davem@davemloft.net> | 2018-03-27 13:18:10 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-03-27 13:18:10 -0400 |
commit | c709002c23f91d90eb6ee2d4efbb548a8fe3cc80 (patch) | |
tree | dc2887c1b2089055ad7c2d13df0ea20b3a27969b /net/core/rtnetlink.c | |
parent | cdcfeb0fb473e34e012b9a78b5cb377a6ad1434d (diff) | |
parent | 8518e9bb98b602eca0717d5aaad63ccbe56539d2 (diff) | |
download | linux-c709002c23f91d90eb6ee2d4efbb548a8fe3cc80.tar.gz linux-c709002c23f91d90eb6ee2d4efbb548a8fe3cc80.tar.bz2 linux-c709002c23f91d90eb6ee2d4efbb548a8fe3cc80.zip |
Merge branch 'pernet-all-async'
Kirill Tkhai says:
====================
Make pernet_operations always read locked
All the pernet_operations are converted, and the last one
is in this patchset (nfsd_net_ops acked by J. Bruce Fields).
So, it's the time to kill pernet_operations::async field,
and make setup_net() and cleanup_net() always require
the rwsem only read locked.
All further pernet_operations have to be developed to fit
this rule. Some of previous patches added a comment to
struct pernet_operations about that.
Also, this patchset renames net_sem to pernet_ops_rwsem
to make the target area of the rwsem is more clear visible,
and adds more comments.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/rtnetlink.c')
-rw-r--r-- | net/core/rtnetlink.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 87079eaa871b..2d3949789cef 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -459,12 +459,12 @@ static void rtnl_lock_unregistering_all(void) */ void rtnl_link_unregister(struct rtnl_link_ops *ops) { - /* Close the race with cleanup_net() */ - down_write(&net_sem); + /* Close the race with setup_net() and cleanup_net() */ + down_write(&pernet_ops_rwsem); rtnl_lock_unregistering_all(); __rtnl_link_unregister(ops); rtnl_unlock(); - up_write(&net_sem); + up_write(&pernet_ops_rwsem); } EXPORT_SYMBOL_GPL(rtnl_link_unregister); @@ -4730,7 +4730,6 @@ static void __net_exit rtnetlink_net_exit(struct net *net) static struct pernet_operations rtnetlink_net_ops = { .init = rtnetlink_net_init, .exit = rtnetlink_net_exit, - .async = true, }; void __init rtnetlink_init(void) |