PATCH: Fix up VLAN memory leaks
Subsystems (2)
The first patch makes VLAN code quieter w/regard to the /var/log/messages output.
The second fixes what I believe are two memory/resource leaks.
I ran a perl script that created and destroyed thousands of VLANs...and my box is still standing, so I think the changes are good... Please look them over for sanity though, I may be mis-understanding some of Dave's changes...
Patches are against 2.4.20-rc1
Thanks,
Ben
Signature · 3 lines
Ben Greear <[email protected]> <Ben_Greear AT excite.com> President of Candela Technologies Inc http://www.candelatech.com ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear
vlan_dev.c renamed from home/greear/kernel/2.4/linux-2.4.19/net/8021q/vlan_dev.c +3 -3
@@ -738,7 +738,7 @@while (dmi) {dev_mc_delete (dev, dmi->dmi_addr, dmi->dmi_addrlen,0 ); - printk(KERN_INFO "%s: del %.2x:%.2x:%.2x:%.2x:%.2x:%.2x mcast address from vlan interface\n", + printk(KERN_DEBUG "%s: del %.2x:%.2x:%.2x:%.2x:%.2x:%.2x mcast address from vlan interface\n", dev->name, dmi->dmi_addr[0], dmi->dmi_addr[1],
@@ -820,7 +820,7 @@for (dmi = vlan_dev->mc_list; dmi !=NULL ; dmi = dmi->next) {if (vlan_should_add_mc (dmi,VLAN_DEV_INFO (vlan_dev)->old_mc_list)) {dev_mc_add (real_dev, dmi->dmi_addr, dmi->dmi_addrlen,0 ); - printk(KERN_INFO "%s: add %.2x:%.2x:%.2x:%.2x:%.2x:%.2x mcast address to master interface\n", + printk(KERN_DEBUG "%s: add %.2x:%.2x:%.2x:%.2x:%.2x:%.2x mcast address to master interface\n", vlan_dev->name, dmi->dmi_addr[0], dmi->dmi_addr[1],
@@ -838,7 +838,7 @@* delete it from the real list on the underlying device. */ dev_mc_delete (real_dev, dmi->dmi_addr, dmi->dmi_addrlen,0 ); - printk(KERN_INFO "%s: del %.2x:%.2x:%.2x:%.2x:%.2x:%.2x mcast address from master interface\n", + printk(KERN_DEBUG "%s: del %.2x:%.2x:%.2x:%.2x:%.2x:%.2x mcast address from master interface\n", vlan_dev->name, dmi->dmi_addr[0], dmi->dmi_addr[1],
vlan.c renamed from home/greear/kernel/2.4/linux-2.4.19/net/8021q/vlan.c +6 -2
@@ -45,7 +45,7 @@static char vlan_fullname[] ="802.1Q VLAN Support" ;static unsigned int vlan_version =1 ; -static unsigned int vlan_release =7 ; +static unsigned int vlan_release =8 ;static char vlan_copyright[] ="Ben Greear <[email protected]>" ;static char vlan_buggyright[] ="David S. Miller <[email protected]>" ;
@@ -256,6 +256,10 @@__grp_unhash (grp);spin_unlock_bh (&vlan_group_lock); +/* Free the group, after we have removed it from the hash. */ +kfree (grp); + grp =NULL ; + ret =1 ; }
@@ -625,7 +629,7 @@ ret =unregister_vlan_dev (dev,VLAN_DEV_INFO (vlandev)->vlan_id); - +dev_put (vlandev);unregister_netdevice (vlandev);/* Group was destroyed? */