From: Jay Vosburgh Date: Wed, 14 Sep 2005 21:52:09 +0000 (-0700) Subject: [PATCH] bonding: plug reference count leak X-Git-Tag: v2.6.14-rc2~5^2~68 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=ed4b9f8014db4f343e89b44b7c5ca355f439ce36;p=linux-2.6-omap-h63xx.git [PATCH] bonding: plug reference count leak Bonding leaks route structures when the ARP monitor is configured to send probes over VLANs. Originally reported by Ian Abel ; his original fix was modified by Jay Vosburgh to correct coding style and to close a leak it missed. Signed-off-by: Jay Vosburgh Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 94c9f68dd16..f8dedb623dc 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -2879,6 +2879,7 @@ static void bond_arp_send_all(struct bonding *bond, struct slave *slave) * This target is not on a VLAN */ if (rt->u.dst.dev == bond->dev) { + ip_rt_put(rt); dprintk("basa: rtdev == bond->dev: arp_send\n"); bond_arp_send(slave->dev, ARPOP_REQUEST, targets[i], bond->master_ip, 0); @@ -2898,6 +2899,7 @@ static void bond_arp_send_all(struct bonding *bond, struct slave *slave) } if (vlan_id) { + ip_rt_put(rt); bond_arp_send(slave->dev, ARPOP_REQUEST, targets[i], vlan->vlan_ip, vlan_id); continue; @@ -2909,6 +2911,7 @@ static void bond_arp_send_all(struct bonding *bond, struct slave *slave) bond->dev->name, NIPQUAD(fl.fl4_dst), rt->u.dst.dev ? rt->u.dst.dev->name : "NULL"); } + ip_rt_put(rt); } }