From 22e2a08d7672a449ab2ec9e9e62084f8f0965fbd Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Fri, 4 Apr 2008 15:00:52 -0700 Subject: [PATCH] --- yaml --- r: 88184 b: refs/heads/master c: bfe87dbc7b4da5b05a1a78480e996787a500cc6f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/8021q/vlan_dev.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 309ea7725021..fde49c9e9d6b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 30ecce908b944079181938e61ddbc00c8b23798c +refs/heads/master: bfe87dbc7b4da5b05a1a78480e996787a500cc6f diff --git a/trunk/net/8021q/vlan_dev.c b/trunk/net/8021q/vlan_dev.c index 480ea90e7dcd..41a76a05e6fd 100644 --- a/trunk/net/8021q/vlan_dev.c +++ b/trunk/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;