From: Javier Achirica Date: Thu, 7 Aug 2003 14:29:15 +0000 (-0400) Subject: [netdrvr airo] safer unload code X-Git-Tag: v2.6.0-test3~12^2~6^2~2 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=e6eb8d816a2d1095e397f7bbfb9506fc02883bea;p=history.git [netdrvr airo] safer unload code --- diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c index b760a5d6574b..184349ffe959 100644 --- a/drivers/net/wireless/airo.c +++ b/drivers/net/wireless/airo.c @@ -1608,13 +1608,10 @@ static void del_airo_dev( struct net_device *dev ); void stop_airo_card( struct net_device *dev, int freeres ) { struct airo_info *ai = dev->priv; - flush_scheduled_work(); disable_interrupts(ai); free_irq( dev->irq, dev ); - if (ai->flash) - kfree(ai->flash); - if (ai->rssi) - kfree(ai->rssi); + if (auto_wep) + del_timer_sync(&ai->timer); takedown_proc_entry( dev, ai ); if (ai->registered) { unregister_netdev( dev ); @@ -1625,7 +1622,11 @@ void stop_airo_card( struct net_device *dev, int freeres ) } ai->registered = 0; } - if (auto_wep) del_timer_sync(&ai->timer); + flush_scheduled_work(); + if (ai->flash) + kfree(ai->flash); + if (ai->rssi) + kfree(ai->rssi); if (freeres) { /* PCMCIA frees this stuff, so only for PCI and ISA */ release_region( dev->base_addr, 64 );