netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH][VLAN]: Fix egress priority mappings leak.
  2008-04-04 10:07 [PATCH][VLAN]: Fix egress priority mappings leak Pavel Emelyanov
@ 2008-04-04  9:45 ` Patrick McHardy
  2008-04-04 19:45   ` David Miller
  0 siblings, 1 reply; 3+ messages in thread
From: Patrick McHardy @ 2008-04-04  9:45 UTC (permalink / raw)
  To: Pavel Emelyanov; +Cc: David Miller, Linux Netdev List, devel

Pavel Emelyanov wrote:
> These entries are allocated in vlan_dev_set_egress_priority, 
> but are never released and leaks on vlan device removal.
> 
> Drop these in vlan's ->uninit callback - after the device is 
> brought down and everyone is notified about it is going to
> be unregistered.
> 
> Found during testing vlan netnsization patchset.
> 
> Signed-off-by: Pavel Emelyanov <xemul@openvz.org>

Good catch, thanks.

Acked-by: Patrick McHardy <kaber@trash.net>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH][VLAN]: Fix egress priority mappings leak.
@ 2008-04-04 10:07 Pavel Emelyanov
  2008-04-04  9:45 ` Patrick McHardy
  0 siblings, 1 reply; 3+ messages in thread
From: Pavel Emelyanov @ 2008-04-04 10:07 UTC (permalink / raw)
  To: David Miller, Patrick McHardy; +Cc: Linux Netdev List, devel

These entries are allocated in vlan_dev_set_egress_priority, 
but are never released and leaks on vlan device removal.

Drop these in vlan's ->uninit callback - after the device is 
brought down and everyone is notified about it is going to
be unregistered.

Found during testing vlan netnsization patchset.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>

---

diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 480ea90..41a76a0 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -692,6 +692,20 @@ static int vlan_dev_init(struct net_device *dev)
 	return 0;
 }
 
+static void vlan_dev_uninit(struct net_device *dev)
+{
+	struct vlan_priority_tci_mapping *pm;
+	struct vlan_dev_info *vlan = vlan_dev_info(dev);
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(vlan->egress_priority_map); i++) {
+		while ((pm = vlan->egress_priority_map[i]) != NULL) {
+			vlan->egress_priority_map[i] = pm->next;
+			kfree(pm);
+		}
+	}
+}
+
 void vlan_setup(struct net_device *dev)
 {
 	ether_setup(dev);
@@ -701,6 +715,7 @@ void vlan_setup(struct net_device *dev)
 
 	dev->change_mtu		= vlan_dev_change_mtu;
 	dev->init		= vlan_dev_init;
+	dev->uninit		= vlan_dev_uninit;
 	dev->open		= vlan_dev_open;
 	dev->stop		= vlan_dev_stop;
 	dev->set_mac_address	= vlan_dev_set_mac_address;

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH][VLAN]: Fix egress priority mappings leak.
  2008-04-04  9:45 ` Patrick McHardy
@ 2008-04-04 19:45   ` David Miller
  0 siblings, 0 replies; 3+ messages in thread
From: David Miller @ 2008-04-04 19:45 UTC (permalink / raw)
  To: kaber; +Cc: xemul, netdev, devel

From: Patrick McHardy <kaber@trash.net>
Date: Fri, 04 Apr 2008 11:45:58 +0200

> Pavel Emelyanov wrote:
> > These entries are allocated in vlan_dev_set_egress_priority, 
> > but are never released and leaks on vlan device removal.
> > 
> > Drop these in vlan's ->uninit callback - after the device is 
> > brought down and everyone is notified about it is going to
> > be unregistered.
> > 
> > Found during testing vlan netnsization patchset.
> > 
> > Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
> 
> Good catch, thanks.
> 
> Acked-by: Patrick McHardy <kaber@trash.net>

Applied, thanks a lot.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-04-04 19:45 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-04 10:07 [PATCH][VLAN]: Fix egress priority mappings leak Pavel Emelyanov
2008-04-04  9:45 ` Patrick McHardy
2008-04-04 19:45   ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).