diff options
Diffstat (limited to 'drivers/net/pcmcia/3c574_cs.c')
-rw-r--r-- | drivers/net/pcmcia/3c574_cs.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c index 60a3bc2b8fc4..8fcb63698ef1 100644 --- a/drivers/net/pcmcia/3c574_cs.c +++ b/drivers/net/pcmcia/3c574_cs.c | |||
@@ -255,8 +255,6 @@ static dev_info_t dev_info = "3c574_cs"; | |||
255 | static dev_link_t *tc574_attach(void); | 255 | static dev_link_t *tc574_attach(void); |
256 | static void tc574_detach(struct pcmcia_device *p_dev); | 256 | static void tc574_detach(struct pcmcia_device *p_dev); |
257 | 257 | ||
258 | static dev_link_t *dev_list; | ||
259 | |||
260 | /* | 258 | /* |
261 | tc574_attach() creates an "instance" of the driver, allocating | 259 | tc574_attach() creates an "instance" of the driver, allocating |
262 | local data structures for one device. The device is registered | 260 | local data structures for one device. The device is registered |
@@ -308,8 +306,7 @@ static dev_link_t *tc574_attach(void) | |||
308 | #endif | 306 | #endif |
309 | 307 | ||
310 | /* Register with Card Services */ | 308 | /* Register with Card Services */ |
311 | link->next = dev_list; | 309 | link->next = NULL; |
312 | dev_list = link; | ||
313 | client_reg.dev_info = &dev_info; | 310 | client_reg.dev_info = &dev_info; |
314 | client_reg.Version = 0x0210; | 311 | client_reg.Version = 0x0210; |
315 | client_reg.event_callback_args.client_data = link; | 312 | client_reg.event_callback_args.client_data = link; |
@@ -336,24 +333,15 @@ static void tc574_detach(struct pcmcia_device *p_dev) | |||
336 | { | 333 | { |
337 | dev_link_t *link = dev_to_instance(p_dev); | 334 | dev_link_t *link = dev_to_instance(p_dev); |
338 | struct net_device *dev = link->priv; | 335 | struct net_device *dev = link->priv; |
339 | dev_link_t **linkp; | ||
340 | 336 | ||
341 | DEBUG(0, "3c574_detach(0x%p)\n", link); | 337 | DEBUG(0, "3c574_detach(0x%p)\n", link); |
342 | 338 | ||
343 | /* Locate device structure */ | ||
344 | for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) | ||
345 | if (*linkp == link) break; | ||
346 | if (*linkp == NULL) | ||
347 | return; | ||
348 | |||
349 | if (link->dev) | 339 | if (link->dev) |
350 | unregister_netdev(dev); | 340 | unregister_netdev(dev); |
351 | 341 | ||
352 | if (link->state & DEV_CONFIG) | 342 | if (link->state & DEV_CONFIG) |
353 | tc574_release(link); | 343 | tc574_release(link); |
354 | 344 | ||
355 | /* Unlink device structure, free bits */ | ||
356 | *linkp = link->next; | ||
357 | free_netdev(dev); | 345 | free_netdev(dev); |
358 | } /* tc574_detach */ | 346 | } /* tc574_detach */ |
359 | 347 | ||
@@ -1310,7 +1298,6 @@ static int __init init_tc574(void) | |||
1310 | static void __exit exit_tc574(void) | 1298 | static void __exit exit_tc574(void) |
1311 | { | 1299 | { |
1312 | pcmcia_unregister_driver(&tc574_driver); | 1300 | pcmcia_unregister_driver(&tc574_driver); |
1313 | BUG_ON(dev_list != NULL); | ||
1314 | } | 1301 | } |
1315 | 1302 | ||
1316 | module_init(init_tc574); | 1303 | module_init(init_tc574); |