Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 23c049ca authored by Eric W. Biederman's avatar Eric W. Biederman Committed by David S. Miller
Browse files

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: default avatarEric W. Biederman <ebiederm@xmission.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 946d1a92
Loading
Loading
Loading
Loading
+6 −19
Original line number Diff line number Diff line
@@ -3765,28 +3765,14 @@ static struct xfrm_mgr pfkeyv2_mgr =

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;

	net_pfkey = kmalloc(sizeof(struct netns_pfkey), GFP_KERNEL);
	if (!net_pfkey) {
		rv = -ENOMEM;
		goto out_kmalloc;
	}
	INIT_HLIST_HEAD(&net_pfkey->table);
	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:
out_assign:
	kfree(net_pfkey);
out_kmalloc:
	return rv;
}

@@ -3796,17 +3782,18 @@ static void __net_exit pfkey_net_exit(struct net *net)

	pfkey_exit_proc(net);
	BUG_ON(!hlist_empty(&net_pfkey->table));
	kfree(net_pfkey);
}

static struct pernet_operations pfkey_net_ops = {
	.init = pfkey_net_init,
	.exit = pfkey_net_exit,
	.id   = &pfkey_net_id,
	.size = sizeof(struct netns_pfkey),
};

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);
	sock_unregister(PF_KEY);
	proto_unregister(&key_proto);
@@ -3825,7 +3812,7 @@ static int __init ipsec_pfkey_init(void)
	err = xfrm_register_km(&pfkeyv2_mgr);
	if (err != 0)
		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)
		goto out_xfrm_unregister_km;
out: