net: Simplify conntrack_proto_gre pernet operations.
authorEric W. Biederman <ebiederm@xmission.com>
Sun, 29 Nov 2009 15:46:08 +0000 (15:46 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 2 Dec 2009 00:15:55 +0000 (16:15 -0800)
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/netfilter/nf_conntrack_proto_gre.c

index 91d0e71..c99cfba 100644 (file)
@@ -300,32 +300,24 @@ static struct nf_conntrack_l4proto nf_conntrack_l4proto_gre4 __read_mostly = {
 
 static int proto_gre_net_init(struct net *net)
 {
-       struct netns_proto_gre *net_gre;
-       int rv;
+       struct netns_proto_gre *net_gre = net_generic(net, proto_gre_net_id);
 
-       net_gre = kmalloc(sizeof(struct netns_proto_gre), GFP_KERNEL);
-       if (!net_gre)
-               return -ENOMEM;
        rwlock_init(&net_gre->keymap_lock);
        INIT_LIST_HEAD(&net_gre->keymap_list);
 
-       rv = net_assign_generic(net, proto_gre_net_id, net_gre);
-       if (rv < 0)
-               kfree(net_gre);
-       return rv;
+       return 0;
 }
 
 static void proto_gre_net_exit(struct net *net)
 {
-       struct netns_proto_gre *net_gre = net_generic(net, proto_gre_net_id);
-
        nf_ct_gre_keymap_flush(net);
-       kfree(net_gre);
 }
 
 static struct pernet_operations proto_gre_net_ops = {
        .init = proto_gre_net_init,
        .exit = proto_gre_net_exit,
+       .id   = &proto_gre_net_id,
+       .size = sizeof(struct netns_proto_gre),
 };
 
 static int __init nf_ct_proto_gre_init(void)
@@ -335,7 +327,7 @@ static int __init nf_ct_proto_gre_init(void)
        rv = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_gre4);
        if (rv < 0)
                return rv;
-       rv = register_pernet_gen_subsys(&proto_gre_net_id, &proto_gre_net_ops);
+       rv = register_pernet_subsys(&proto_gre_net_ops);
        if (rv < 0)
                nf_conntrack_l4proto_unregister(&nf_conntrack_l4proto_gre4);
        return rv;
@@ -344,7 +336,7 @@ static int __init nf_ct_proto_gre_init(void)
 static void __exit nf_ct_proto_gre_fini(void)
 {
        nf_conntrack_l4proto_unregister(&nf_conntrack_l4proto_gre4);
-       unregister_pernet_gen_subsys(proto_gre_net_id, &proto_gre_net_ops);
+       unregister_pernet_subsys(&proto_gre_net_ops);
 }
 
 module_init(nf_ct_proto_gre_init);