e1000: use flush_work_keventd()
Andrew Morton [Wed, 9 May 2007 09:33:58 +0000 (02:33 -0700)]
Switch e1000 over to flush_work_keventd().  This probably fixes a netdev-close
versus linkwatch rtnl_lock() deadlock which nobody knew about.

(akpm: bypassed maintainers, sorry.  There are other patches which depend on
this)

Cc: "Maciej W. Rozycki" <macro@linux-mips.org>
Cc: David Howells <dhowells@redhat.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jeff Garzik <jeff@garzik.org>
Acked-by: Auke Kok <auke-jan.h.kok@intel.com>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

drivers/net/e1000/e1000_main.c

index 3a03a74..397e25b 100644 (file)
@@ -1214,7 +1214,7 @@ e1000_remove(struct pci_dev *pdev)
        int i;
 #endif
 
-       flush_scheduled_work();
+       flush_work_keventd(&adapter->reset_task);
 
        e1000_release_manageability(adapter);