diff options
author | Amir Hanania <amir.hanania@intel.com> | 2012-07-09 20:47:19 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-10 23:32:27 -0700 |
commit | efc73f4bbc238d4f579fb612c04c8e1dd8a82979 (patch) | |
tree | ab92dd7fb1ea7a0f91137cef929c8c107fc9fe45 | |
parent | 941a46a29c9388f9cef518fa3498329fb55badca (diff) | |
download | linux-efc73f4bbc238d4f579fb612c04c8e1dd8a82979.tar.gz linux-efc73f4bbc238d4f579fb612c04c8e1dd8a82979.tar.bz2 linux-efc73f4bbc238d4f579fb612c04c8e1dd8a82979.zip |
net: Fix memory leak - vlan_info struct
In driver reload test there is a memory leak.
The structure vlan_info was not freed when the driver was removed.
It was not released since the nr_vids var is one after last vlan was removed.
The nr_vids is one, since vlan zero is added to the interface when the interface
is being set, but the vlan zero is not deleted at unregister.
Fix - delete vlan zero when we unregister the device.
Signed-off-by: Amir Hanania <amir.hanania@intel.com>
Acked-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/8021q/vlan.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c index 6089f0cf23b4..9096bcb08132 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c @@ -403,6 +403,9 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event, break; case NETDEV_DOWN: + if (dev->features & NETIF_F_HW_VLAN_FILTER) + vlan_vid_del(dev, 0); + /* Put all VLANs for this dev in the down state too. */ for (i = 0; i < VLAN_N_VID; i++) { vlandev = vlan_group_get_device(grp, i); |