VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / drivers / net / pcmcia / 3c574_cs.c
index 59d80eb..7c4ed0d 100644 (file)
@@ -360,7 +360,10 @@ static void tc574_detach(dev_link_t *link)
        for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)
                if (*linkp == link) break;
        if (*linkp == NULL)
-       return;
+               return;
+
+       if (link->dev)
+               unregister_netdev(dev);
 
        if (link->state & DEV_CONFIG)
                tc574_release(link);
@@ -370,8 +373,6 @@ static void tc574_detach(dev_link_t *link)
 
        /* Unlink device structure, free bits */
        *linkp = link->next;
-       if (link->dev)
-               unregister_netdev(dev);
        free_netdev(dev);
 } /* tc574_detach */
 
@@ -580,10 +581,8 @@ static int tc574_event(event_t event, int priority,
        switch (event) {
        case CS_EVENT_CARD_REMOVAL:
                link->state &= ~DEV_PRESENT;
-               if (link->state & DEV_CONFIG) {
+               if (link->state & DEV_CONFIG)
                        netif_device_detach(dev);
-                       tc574_release(link);
-               }
                break;
        case CS_EVENT_CARD_INSERTION:
                link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;