aboutsummaryrefslogtreecommitdiffstats
path: root/net/8021q
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-07-16 17:09:34 -0400
committerDavid S. Miller <davem@davemloft.net>2014-07-16 17:09:34 -0400
commit1a98c69af1ecd97bfd1f4e4539924a9192434e36 (patch)
treea243defcf921ea174f8e43fce11d06830a6a9c36 /net/8021q
parent7a575f6b907ea5d207d2b5010293c189616eae34 (diff)
parentb6603fe574af289dbe9eb9fb4c540bca04f5a053 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/8021q')
-rw-r--r--net/8021q/vlan_dev.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 9d0223b16b46..35a6b6b15e8a 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -629,8 +629,6 @@ static void vlan_dev_uninit(struct net_device *dev)
629 struct vlan_dev_priv *vlan = vlan_dev_priv(dev); 629 struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
630 int i; 630 int i;
631 631
632 free_percpu(vlan->vlan_pcpu_stats);
633 vlan->vlan_pcpu_stats = NULL;
634 for (i = 0; i < ARRAY_SIZE(vlan->egress_priority_map); i++) { 632 for (i = 0; i < ARRAY_SIZE(vlan->egress_priority_map); i++) {
635 while ((pm = vlan->egress_priority_map[i]) != NULL) { 633 while ((pm = vlan->egress_priority_map[i]) != NULL) {
636 vlan->egress_priority_map[i] = pm->next; 634 vlan->egress_priority_map[i] = pm->next;
@@ -787,6 +785,15 @@ static const struct net_device_ops vlan_netdev_ops = {
787 .ndo_get_lock_subclass = vlan_dev_get_lock_subclass, 785 .ndo_get_lock_subclass = vlan_dev_get_lock_subclass,
788}; 786};
789 787
788static void vlan_dev_free(struct net_device *dev)
789{
790 struct vlan_dev_priv *vlan = vlan_dev_priv(dev);
791
792 free_percpu(vlan->vlan_pcpu_stats);
793 vlan->vlan_pcpu_stats = NULL;
794 free_netdev(dev);
795}
796
790void vlan_setup(struct net_device *dev) 797void vlan_setup(struct net_device *dev)
791{ 798{
792 ether_setup(dev); 799 ether_setup(dev);
@@ -796,7 +803,7 @@ void vlan_setup(struct net_device *dev)
796 dev->tx_queue_len = 0; 803 dev->tx_queue_len = 0;
797 804
798 dev->netdev_ops = &vlan_netdev_ops; 805 dev->netdev_ops = &vlan_netdev_ops;
799 dev->destructor = free_netdev; 806 dev->destructor = vlan_dev_free;
800 dev->ethtool_ops = &vlan_ethtool_ops; 807 dev->ethtool_ops = &vlan_ethtool_ops;
801 808
802 memset(dev->broadcast, 0, ETH_ALEN); 809 memset(dev->broadcast, 0, ETH_ALEN);