net: Simplify phonet pernet operations.
Eric W. Biederman [Sun, 29 Nov 2009 15:46:12 +0000 (15:46 +0000)]
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>

net/phonet/pn_dev.c

index d87388c..bc4a33b 100644 (file)
@@ -313,19 +313,14 @@ static struct notifier_block phonet_device_notifier = {
 /* Per-namespace Phonet devices handling */
 static int phonet_init_net(struct net *net)
 {
-       struct phonet_net *pnn = kzalloc(sizeof(*pnn), GFP_KERNEL);
-       if (!pnn)
-               return -ENOMEM;
+       struct phonet_net *pnn = net_generic(net, phonet_net_id);
 
-       if (!proc_net_fops_create(net, "phonet", 0, &pn_sock_seq_fops)) {
-               kfree(pnn);
+       if (!proc_net_fops_create(net, "phonet", 0, &pn_sock_seq_fops))
                return -ENOMEM;
-       }
 
        INIT_LIST_HEAD(&pnn->pndevs.list);
        mutex_init(&pnn->pndevs.lock);
        mutex_init(&pnn->routes.lock);
-       net_assign_generic(net, phonet_net_id, pnn);
        return 0;
 }
 
@@ -349,18 +344,19 @@ static void phonet_exit_net(struct net *net)
        rtnl_unlock();
 
        proc_net_remove(net, "phonet");
-       kfree(pnn);
 }
 
 static struct pernet_operations phonet_net_ops = {
        .init = phonet_init_net,
        .exit = phonet_exit_net,
+       .id   = &phonet_net_id,
+       .size = sizeof(struct phonet_net),
 };
 
 /* Initialize Phonet devices list */
 int __init phonet_device_init(void)
 {
-       int err = register_pernet_gen_device(&phonet_net_id, &phonet_net_ops);
+       int err = register_pernet_device(&phonet_net_ops);
        if (err)
                return err;
 
@@ -375,7 +371,7 @@ void phonet_device_exit(void)
 {
        rtnl_unregister_all(PF_PHONET);
        unregister_netdevice_notifier(&phonet_device_notifier);
-       unregister_pernet_gen_device(phonet_net_id, &phonet_net_ops);
+       unregister_pernet_device(&phonet_net_ops);
 }
 
 int phonet_route_add(struct net_device *dev, u8 daddr)