linux/drivers/net/tulip
David S. Miller 4bb073c0e3 net: Eliminate flush_scheduled_work() calls while RTNL is held.
If the RTNL is held when we invoke flush_scheduled_work() we could
deadlock.  One such case is linkwatch, it is a work struct which tries
to grab the RTNL semaphore.

The most common case are net driver ->stop() methods.  The
simplest conversion is to instead use cancel_{delayed_}work_sync()
explicitly on the various work struct the driver uses.

This is an OK transformation because these work structs are doing
things like resetting the chip, restarting link negotiation, and so
forth.  And if we're bringing down the device, we're about to turn the
chip off and reset it anways.  So if we cancel a pending work event,
that's fine here.

Some drivers were working around this deadlock by using a msleep()
polling loop of some sort, and those cases are converted to instead
use cancel_{delayed_}work_sync() as well.

Signed-off-by: David S. Miller <davem@davemloft.net>
2008-06-12 02:22:02 -07:00
..
21142.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
Kconfig remove the obsolete xircom_tulip_cb driver 2008-03-17 07:49:23 -04:00
Makefile remove the obsolete xircom_tulip_cb driver 2008-03-17 07:49:23 -04:00
de4x5.c net: use get/put_unaligned_* helpers 2008-04-29 08:06:27 -07:00
de4x5.h net: use get/put_unaligned_* helpers 2008-04-29 08:06:27 -07:00
de2104x.c 2.6.25-rc4 de_stop_rxtx polling wrong 2008-03-17 08:11:31 -04:00
dmfe.c [TULIP] DMFE: Fix SROM parsing regression. 2008-01-23 03:11:39 -08:00
eeprom.c [netdrvr] tulip_read_eeprom fixes for BUG 4420 2008-03-28 21:52:14 -04:00
interrupt.c [NET]: Do not check netif_running() and carrier state in ->poll() 2008-01-08 23:30:09 -08:00
media.c TULIP: Natsemi dp83840a PHY fix 2007-04-28 11:00:58 -04:00
pnic.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
pnic2.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
timer.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
tulip.h net: use get/put_unaligned_* helpers 2008-04-29 08:06:27 -07:00
tulip_core.c net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
uli526x.c uli526x: add support for netpoll 2008-05-22 06:19:27 -04:00
winbond-840.c [netdrvr] tulip/winbond-840: don't let tulip.h symbol stomp ours 2008-04-16 20:37:24 -04:00
xircom_cb.c xircom_cb should return NETDEV_TX_BUSY when no descriptors available 2008-02-05 13:31:29 -05:00