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: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
946d1a9298
commit
23c049ca92
|
@ -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);
|
|
||||||
if (rv < 0)
|
|
||||||
goto out_proc;
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
out_proc:
|
rv = pfkey_init_proc(net);
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
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:
|
||||||
|
|
Loading…
Reference in New Issue