summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2008-07-06 06:26:41 +0200
committerDavid S. Miller <davem@davemloft.net>2008-07-06 06:26:41 +0200
commitce305002e1c9b90c2c151ce18bab0b895dd55ae6 (patch)
treedce98db82836d00cc45db667ada6b77a86724f13
parentvlan: Change vlan_dev_set_vlan_flag() to handle multiple flags at once (diff)
downloadlinux-ce305002e1c9b90c2c151ce18bab0b895dd55ae6.tar.xz
linux-ce305002e1c9b90c2c151ce18bab0b895dd55ae6.zip
vlan: Move device unregistration before lower dev cleanup
Move the unregister_netdevice() call for the VLAN device before cleanup for the lower device. This is needed by GVRP so it can send a leave message before the applicant on the lower device is cleaned up. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/8021q/vlan.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index b591bfca1ab2..8cae2daeb1cc 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -165,6 +165,8 @@ void unregister_vlan_dev(struct net_device *dev)
synchronize_net();
+ unregister_netdevice(dev);
+
/* If the group is now empty, kill off the group. */
if (grp->nr_vlans == 0) {
if (real_dev->features & NETIF_F_HW_VLAN_RX)
@@ -178,8 +180,6 @@ void unregister_vlan_dev(struct net_device *dev)
/* Get rid of the vlan's reference to real_dev */
dev_put(real_dev);
-
- unregister_netdevice(dev);
}
static void vlan_transfer_operstate(const struct net_device *dev,