aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
Diffstat (limited to 'net/core')
-rw-r--r--net/core/dev.c4
-rw-r--r--net/core/pktgen.c22
-rw-r--r--net/core/rtnetlink.c2
3 files changed, 16 insertions, 12 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index d94537914a7..bcb05cb799c 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4294,10 +4294,8 @@ int netdev_set_master(struct net_device *slave, struct net_device *master)
4294 4294
4295 slave->master = master; 4295 slave->master = master;
4296 4296
4297 if (old) { 4297 if (old)
4298 synchronize_net();
4299 dev_put(old); 4298 dev_put(old);
4300 }
4301 return 0; 4299 return 0;
4302} 4300}
4303EXPORT_SYMBOL(netdev_set_master); 4301EXPORT_SYMBOL(netdev_set_master);
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index 67870e9fd09..f76079cd750 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -3544,13 +3544,12 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname)
3544 return -ENOMEM; 3544 return -ENOMEM;
3545 3545
3546 strcpy(pkt_dev->odevname, ifname); 3546 strcpy(pkt_dev->odevname, ifname);
3547 pkt_dev->flows = vmalloc_node(MAX_CFLOWS * sizeof(struct flow_state), 3547 pkt_dev->flows = vzalloc_node(MAX_CFLOWS * sizeof(struct flow_state),
3548 node); 3548 node);
3549 if (pkt_dev->flows == NULL) { 3549 if (pkt_dev->flows == NULL) {
3550 kfree(pkt_dev); 3550 kfree(pkt_dev);
3551 return -ENOMEM; 3551 return -ENOMEM;
3552 } 3552 }
3553 memset(pkt_dev->flows, 0, MAX_CFLOWS * sizeof(struct flow_state));
3554 3553
3555 pkt_dev->removal_mark = 0; 3554 pkt_dev->removal_mark = 0;
3556 pkt_dev->min_pkt_size = ETH_ZLEN; 3555 pkt_dev->min_pkt_size = ETH_ZLEN;
@@ -3708,6 +3707,7 @@ static int __init pg_init(void)
3708{ 3707{
3709 int cpu; 3708 int cpu;
3710 struct proc_dir_entry *pe; 3709 struct proc_dir_entry *pe;
3710 int ret = 0;
3711 3711
3712 pr_info("%s", version); 3712 pr_info("%s", version);
3713 3713
@@ -3718,11 +3718,10 @@ static int __init pg_init(void)
3718 pe = proc_create(PGCTRL, 0600, pg_proc_dir, &pktgen_fops); 3718 pe = proc_create(PGCTRL, 0600, pg_proc_dir, &pktgen_fops);
3719 if (pe == NULL) { 3719 if (pe == NULL) {
3720 pr_err("ERROR: cannot create %s procfs entry\n", PGCTRL); 3720 pr_err("ERROR: cannot create %s procfs entry\n", PGCTRL);
3721 proc_net_remove(&init_net, PG_PROC_DIR); 3721 ret = -EINVAL;
3722 return -EINVAL; 3722 goto remove_dir;
3723 } 3723 }
3724 3724
3725 /* Register us to receive netdevice events */
3726 register_netdevice_notifier(&pktgen_notifier_block); 3725 register_netdevice_notifier(&pktgen_notifier_block);
3727 3726
3728 for_each_online_cpu(cpu) { 3727 for_each_online_cpu(cpu) {
@@ -3736,13 +3735,18 @@ static int __init pg_init(void)
3736 3735
3737 if (list_empty(&pktgen_threads)) { 3736 if (list_empty(&pktgen_threads)) {
3738 pr_err("ERROR: Initialization failed for all threads\n"); 3737 pr_err("ERROR: Initialization failed for all threads\n");
3739 unregister_netdevice_notifier(&pktgen_notifier_block); 3738 ret = -ENODEV;
3740 remove_proc_entry(PGCTRL, pg_proc_dir); 3739 goto unregister;
3741 proc_net_remove(&init_net, PG_PROC_DIR);
3742 return -ENODEV;
3743 } 3740 }
3744 3741
3745 return 0; 3742 return 0;
3743
3744 unregister:
3745 unregister_netdevice_notifier(&pktgen_notifier_block);
3746 remove_proc_entry(PGCTRL, pg_proc_dir);
3747 remove_dir:
3748 proc_net_remove(&init_net, PG_PROC_DIR);
3749 return ret;
3746} 3750}
3747 3751
3748static void __exit pg_cleanup(void) 3752static void __exit pg_cleanup(void)
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index d2ba2597c75..d1644e317e7 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1956,6 +1956,8 @@ static int rtnetlink_event(struct notifier_block *this, unsigned long event, voi
1956 case NETDEV_GOING_DOWN: 1956 case NETDEV_GOING_DOWN:
1957 case NETDEV_UNREGISTER: 1957 case NETDEV_UNREGISTER:
1958 case NETDEV_UNREGISTER_BATCH: 1958 case NETDEV_UNREGISTER_BATCH:
1959 case NETDEV_RELEASE:
1960 case NETDEV_JOIN:
1959 break; 1961 break;
1960 default: 1962 default:
1961 rtmsg_ifinfo(RTM_NEWLINK, dev, 0); 1963 rtmsg_ifinfo(RTM_NEWLINK, dev, 0);