]> err.no Git - linux-2.6/blobdiff - net/core/pktgen.c
[MAC80211]: fix race conditions with keys
[linux-2.6] / net / core / pktgen.c
index 84c0edeedf6df02dff82aa6946cfe4d559d7e87f..94e42be16daaa00e24da84c786c00ffc3e751708 100644 (file)
 #include <linux/wait.h>
 #include <linux/etherdevice.h>
 #include <linux/kthread.h>
+#include <net/net_namespace.h>
 #include <net/checksum.h>
 #include <net/ipv6.h>
 #include <net/addrconf.h>
@@ -1974,6 +1975,9 @@ static int pktgen_device_event(struct notifier_block *unused,
 {
        struct net_device *dev = ptr;
 
+       if (dev->nd_net != &init_net)
+               return NOTIFY_DONE;
+
        /* It is OK that we do not hold the group lock right now,
         * as we run under the RTNL lock.
         */
@@ -2004,7 +2008,7 @@ static int pktgen_setup_dev(struct pktgen_dev *pkt_dev, const char *ifname)
                pkt_dev->odev = NULL;
        }
 
-       odev = dev_get_by_name(ifname);
+       odev = dev_get_by_name(&init_net, ifname);
        if (!odev) {
                printk(KERN_ERR "pktgen: no such netdevice: \"%s\"\n", ifname);
                return -ENODEV;
@@ -3808,7 +3812,7 @@ static int __init pg_init(void)
 
        printk(KERN_INFO "%s", version);
 
-       pg_proc_dir = proc_mkdir(PG_PROC_DIR, proc_net);
+       pg_proc_dir = proc_mkdir(PG_PROC_DIR, init_net.proc_net);
        if (!pg_proc_dir)
                return -ENODEV;
        pg_proc_dir->owner = THIS_MODULE;
@@ -3817,7 +3821,7 @@ static int __init pg_init(void)
        if (pe == NULL) {
                printk(KERN_ERR "pktgen: ERROR: cannot create %s "
                       "procfs entry.\n", PGCTRL);
-               proc_net_remove(PG_PROC_DIR);
+               proc_net_remove(&init_net, PG_PROC_DIR);
                return -EINVAL;
        }
 
@@ -3841,7 +3845,7 @@ static int __init pg_init(void)
                       "all threads\n");
                unregister_netdevice_notifier(&pktgen_notifier_block);
                remove_proc_entry(PGCTRL, pg_proc_dir);
-               proc_net_remove(PG_PROC_DIR);
+               proc_net_remove(&init_net, PG_PROC_DIR);
                return -ENODEV;
        }
 
@@ -3868,7 +3872,7 @@ static void __exit pg_cleanup(void)
 
        /* Clean up proc file system */
        remove_proc_entry(PGCTRL, pg_proc_dir);
-       proc_net_remove(PG_PROC_DIR);
+       proc_net_remove(&init_net, PG_PROC_DIR);
 }
 
 module_init(pg_init);