vlan: Move device unregistration before lower dev cleanup
authorPatrick McHardy <kaber@trash.net>
Sun, 6 Jul 2008 04:26:41 +0000 (21:26 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 6 Jul 2008 04:26:41 +0000 (21:26 -0700)
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>
net/8021q/vlan.c

index b591bfca1ab2bf72bd41448c5e0067addfe26e6e..8cae2daeb1cc399be9ed4240d8d5ac9808767329 100644 (file)
@@ -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,