[NET]: Make /proc/net per network namespace
[linux-block.git] / net / decnet / dn_route.c
index a8bf106b7a6118eba109fd559ae6d330fe911a94..4cfea9563d2abe67cae6ddedab03c90c79b09083 100644 (file)
@@ -77,6 +77,7 @@
 #include <linux/rcupdate.h>
 #include <linux/times.h>
 #include <asm/errno.h>
+#include <net/net_namespace.h>
 #include <net/netlink.h>
 #include <net/neighbour.h>
 #include <net/dst.h>
@@ -1726,7 +1727,7 @@ static int dn_rt_cache_seq_show(struct seq_file *seq, void *v)
        return 0;
 }
 
-static struct seq_operations dn_rt_cache_seq_ops = {
+static const struct seq_operations dn_rt_cache_seq_ops = {
        .start  = dn_rt_cache_seq_start,
        .next   = dn_rt_cache_seq_next,
        .stop   = dn_rt_cache_seq_stop,
@@ -1737,8 +1738,9 @@ static int dn_rt_cache_seq_open(struct inode *inode, struct file *file)
 {
        struct seq_file *seq;
        int rc = -ENOMEM;
-       struct dn_rt_cache_iter_state *s = kmalloc(sizeof(*s), GFP_KERNEL);
+       struct dn_rt_cache_iter_state *s;
 
+       s = kzalloc(sizeof(*s), GFP_KERNEL);
        if (!s)
                goto out;
        rc = seq_open(file, &dn_rt_cache_seq_ops);
@@ -1746,7 +1748,6 @@ static int dn_rt_cache_seq_open(struct inode *inode, struct file *file)
                goto out_kfree;
        seq             = file->private_data;
        seq->private    = s;
-       memset(s, 0, sizeof(*s));
 out:
        return rc;
 out_kfree:
@@ -1770,7 +1771,7 @@ void __init dn_route_init(void)
 
        dn_dst_ops.kmem_cachep =
                kmem_cache_create("dn_dst_cache", sizeof(struct dn_route), 0,
-                                 SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL, NULL);
+                                 SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL);
        init_timer(&dn_route_timer);
        dn_route_timer.function = dn_dst_check_expire;
        dn_route_timer.expires = jiffies + decnet_dst_gc_interval * HZ;
@@ -1814,7 +1815,7 @@ void __init dn_route_init(void)
 
        dn_dst_ops.gc_thresh = (dn_rt_hash_mask + 1);
 
-       proc_net_fops_create("decnet_cache", S_IRUGO, &dn_rt_cache_seq_fops);
+       proc_net_fops_create(&init_net, "decnet_cache", S_IRUGO, &dn_rt_cache_seq_fops);
 
 #ifdef CONFIG_DECNET_ROUTER
        rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute, dn_fib_dump);
@@ -1829,6 +1830,6 @@ void __exit dn_route_cleanup(void)
        del_timer(&dn_route_timer);
        dn_run_flush(0);
 
-       proc_net_remove("decnet_cache");
+       proc_net_remove(&init_net, "decnet_cache");
 }