提交 23c049ca 编写于 作者: E Eric W. Biederman 提交者: David S. Miller

net: Simplify af_key pernet operations.

Take advantage of the new pernet automatic storage management,
and stop using compatibility network namespace functions.
Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 946d1a92
...@@ -3765,28 +3765,14 @@ static struct xfrm_mgr pfkeyv2_mgr = ...@@ -3765,28 +3765,14 @@ static struct xfrm_mgr pfkeyv2_mgr =
static int __net_init pfkey_net_init(struct net *net) static int __net_init pfkey_net_init(struct net *net)
{ {
struct netns_pfkey *net_pfkey; struct netns_pfkey *net_pfkey = net_generic(net, pfkey_net_id);
int rv; int rv;
net_pfkey = kmalloc(sizeof(struct netns_pfkey), GFP_KERNEL);
if (!net_pfkey) {
rv = -ENOMEM;
goto out_kmalloc;
}
INIT_HLIST_HEAD(&net_pfkey->table); INIT_HLIST_HEAD(&net_pfkey->table);
atomic_set(&net_pfkey->socks_nr, 0); atomic_set(&net_pfkey->socks_nr, 0);
rv = net_assign_generic(net, pfkey_net_id, net_pfkey);
if (rv < 0)
goto out_assign;
rv = pfkey_init_proc(net); rv = pfkey_init_proc(net);
if (rv < 0)
goto out_proc;
return 0;
out_proc:
out_assign:
kfree(net_pfkey);
out_kmalloc:
return rv; return rv;
} }
...@@ -3796,17 +3782,18 @@ static void __net_exit pfkey_net_exit(struct net *net) ...@@ -3796,17 +3782,18 @@ static void __net_exit pfkey_net_exit(struct net *net)
pfkey_exit_proc(net); pfkey_exit_proc(net);
BUG_ON(!hlist_empty(&net_pfkey->table)); BUG_ON(!hlist_empty(&net_pfkey->table));
kfree(net_pfkey);
} }
static struct pernet_operations pfkey_net_ops = { static struct pernet_operations pfkey_net_ops = {
.init = pfkey_net_init, .init = pfkey_net_init,
.exit = pfkey_net_exit, .exit = pfkey_net_exit,
.id = &pfkey_net_id,
.size = sizeof(struct netns_pfkey),
}; };
static void __exit ipsec_pfkey_exit(void) static void __exit ipsec_pfkey_exit(void)
{ {
unregister_pernet_gen_subsys(pfkey_net_id, &pfkey_net_ops); unregister_pernet_subsys(&pfkey_net_ops);
xfrm_unregister_km(&pfkeyv2_mgr); xfrm_unregister_km(&pfkeyv2_mgr);
sock_unregister(PF_KEY); sock_unregister(PF_KEY);
proto_unregister(&key_proto); proto_unregister(&key_proto);
...@@ -3825,7 +3812,7 @@ static int __init ipsec_pfkey_init(void) ...@@ -3825,7 +3812,7 @@ static int __init ipsec_pfkey_init(void)
err = xfrm_register_km(&pfkeyv2_mgr); err = xfrm_register_km(&pfkeyv2_mgr);
if (err != 0) if (err != 0)
goto out_sock_unregister; goto out_sock_unregister;
err = register_pernet_gen_subsys(&pfkey_net_id, &pfkey_net_ops); err = register_pernet_subsys(&pfkey_net_ops);
if (err != 0) if (err != 0)
goto out_xfrm_unregister_km; goto out_xfrm_unregister_km;
out: out:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册