linux/drivers/net/hamradio
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
..
6pack.c tty: add throttle/unthrottle helpers 2008-04-30 08:29:47 -07:00
Kconfig Documentation: Fix erroneous "dmascc=" documentation 2007-10-20 00:11:36 +02:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
baycom_epp.c net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
baycom_par.c [PARPORT] Remove unused 'irq' argument from parport irq functions 2007-10-23 19:53:16 -04:00
baycom_ser_fdx.c baycom_ser_fdx: also allow i/o ports >= 0x1000 and enhanced failure logging 2007-04-28 11:01:02 -04:00
baycom_ser_hdx.c IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
bpqether.c [NET] NETNS: Omit net_device->nd_net without CONFIG_NET_NS. 2008-03-26 04:39:53 +09:00
dmascc.c hamradio: Remove unneeded and deprecated cli()/sti() calls in dmascc.c 2008-04-21 14:44:16 -07:00
hdlcdrv.c [NET]: Move hardware header operations out of netdevice. 2007-10-10 16:52:52 -07:00
mkiss.c tty: add throttle/unthrottle helpers 2008-04-30 08:29:47 -07:00
scc.c hamradio/scc: add missing block braces to multi-statement if 2008-05-22 06:03:31 -04:00
yam.c [NET]: Move hardware header operations out of netdevice. 2007-10-10 16:52:52 -07:00
yam1200.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
yam9600.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
z8530.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00