WSL2-Linux-Kernel/drivers/net
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
..
appletalk fix warning in drivers/net/appletalk/cops.c 2008-05-06 12:16:24 -04:00
arcnet
arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-04-30 08:45:48 -07:00
atlx atl1: fix suspend regression 2008-06-10 18:20:39 -04:00
bonding bonding: handle case of device named bonding_master 2008-05-14 22:35:04 -07:00
can
chelsio
cris
cxgb3 cxgb3 - fix EEH 2008-05-13 01:31:37 -04:00
e1000 e1000: convert uint16_t style integers to u16 2008-04-16 20:41:45 -04:00
e1000e e1000e: use resource_size_t, not unsigned long, for phys addrs 2008-05-22 06:19:32 -04:00
ehea net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
fec_8xx
fs_enet drivers/net/fs_enet: remove null pointer dereference 2008-05-22 06:26:28 -04:00
hamradio net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
ibm_emac
ibm_newemac ibm_newemac: Increase MDIO timeouts 2008-04-25 02:08:56 -04:00
igb igb: save and restore pcie/msi state to support EEH recovery 2008-04-25 02:08:04 -04:00
irda irda: net/irda build fix: mcs7780 2008-06-09 15:47:38 -07:00
ixgb ixgb: convert uint16_t style integers to u16 2008-04-16 20:41:44 -04:00
ixgbe ixgbe: fix typo 2008-06-10 18:20:15 -04:00
ixp2000
mlx4 mlx4_core: Support creation of FMRs with pages smaller than 4K 2008-05-05 15:56:52 -07:00
myri10ge myri10ge: update driver version 2008-05-30 22:07:19 -04:00
netxen Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-04-25 12:28:28 -07:00
pcmcia fmvj18x_cs: add NextCom NC5310 rev B support 2008-05-22 14:08:56 -04:00
phy phylib: do EXPORT_SYMBOL on get_phy_id 2008-05-22 14:01:01 -04:00
sfc sfc: Recover from RX queue flush failure 2008-06-10 18:20:21 -04:00
skfp
tokenring drivers/net/tokenring/olympic.c: fix warning 2008-05-22 06:03:30 -04:00
tulip net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
usb net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
wan WAN: protect HDLC proto list while insmod/rmmod 2008-05-22 06:26:32 -04:00
wireless net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
3c59x.c 3c59x: use netstats in net_device structure 2008-05-06 12:22:11 -04:00
3c501.c
3c501.h
3c503.c
3c503.h
3c505.c 3c505: use netstats in net_device structure 2008-04-29 01:55:11 -04:00
3c505.h 3c505: use netstats in net_device structure 2008-04-29 01:55:11 -04:00
3c507.c
3c509.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-05-26 10:14:02 -07:00
3c515.c 3c515: use netstats in net_device structure 2008-04-29 01:55:14 -04:00
3c523.c
3c523.h
3c527.c Convert asm/semaphore.h users to linux/semaphore.h 2008-04-18 22:22:54 -04:00
3c527.h
7990.c add missing lance_* exports 2008-06-10 18:20:17 -04:00
7990.h
8139cp.c
8139too.c
8390.c net: fix returning void-valued expression warnings 2008-05-01 02:47:38 -07:00
8390.h
82596.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
Kconfig missing dependencies on HAS_DMA 2008-05-21 16:55:59 -07:00
LICENSE.SRC
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-04-30 08:45:48 -07:00
Space.c
a2065.c
a2065.h
ac3200.c
acenic.c
acenic.h
acenic_firmware.h
amd8111e.c
amd8111e.h
apne.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
ariadne.c
ariadne.h
at1700.c
atarilance.c
atp.c
atp.h
au1000_eth.c au1000_eth: remove useless check 2008-05-22 06:20:14 -04:00
au1000_eth.h
ax88796.c net drivers: fix platform driver hotplug/coldplug 2008-04-25 02:08:54 -04:00
b44.c
b44.h
bfin_mac.c Blackfin EMAC Driver: Removed duplicated include <linux/ethtool.h> 2008-05-22 06:20:11 -04:00
bfin_mac.h Blackfin EMAC Driver: code cleanup 2008-04-29 01:56:14 -04:00
bmac.c
bmac.h
bnx2.c net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
bnx2.h net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
bnx2_fw.h
bnx2_fw2.h bnx2: Update RV2P firmware for 5709. 2008-05-02 16:57:59 -07:00
bnx2x.c
bnx2x.h
bnx2x_fw_defs.h
bnx2x_hsi.h
bnx2x_init.h
bnx2x_init_values.h
bnx2x_reg.h
bsd_comp.c
cassini.c cassini: Only use chip checksum for ipv4 packets. 2008-05-21 17:05:34 -07:00
cassini.h
cpmac.c cpmac bugfixes and enhancements 2008-05-22 06:20:02 -04:00
cs89x0.c [netdrvr] CS89X0: Add cleanup for dma after fail 2008-05-30 22:07:11 -04:00
cs89x0.h
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c
defxx.h
depca.c
depca.h
dl2k.c
dl2k.h
dm9000.c [netdrvr] dm9000: use delayed work to update mii phy state fix 2008-05-22 06:03:28 -04:00
dm9000.h
dummy.c
e100.c net: use get/put_unaligned_* helpers 2008-04-29 08:06:27 -07:00
e2100.c
eepro.c net: eepro autoport typo 2008-04-29 01:56:01 -04:00
eepro100.c
eexpress.c [netdrvr] eexpress: IPv6 fails - multicast problems 2008-05-06 12:22:34 -04:00
eexpress.h
enc28j60.c
enc28j60_hw.h
epic100.c
eql.c
es3210.c
eth16i.c
ewrk3.c
ewrk3.h
fealnx.c
fec.c m68knommu: fix FEC driver locking 2008-05-01 08:08:36 -07:00
fec.h m68knommu: fix ColdFire 5272 fec driver hash registers 2008-05-01 08:08:36 -07:00
fec_mpc52xx.c fec_mpc52xx: MPC52xx_MESSAGES_DEFAULT: 2nd NETIF_MSG_IFDOWN => IFUP 2008-06-11 22:24:42 -04:00
fec_mpc52xx.h [POWERPC] mpc5200: Allow for fixed speed MII configurations 2008-05-01 11:05:58 -06:00
fec_mpc52xx_phy.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-04-17 23:56:30 -07:00
forcedeth.c forcedeth: msi interrupts 2008-06-10 18:20:13 -04:00
gianfar.c gianfar: Fix a bug where the pointer never moves for dma_unmap... 2008-05-13 01:31:38 -04:00
gianfar.h gianfar: Fix a locking bug in gianfar's sysfs code 2008-05-06 12:01:34 -04:00
gianfar_ethtool.c
gianfar_mii.c [netdrvr] gianfar: Determine TBIPA value dynamically 2008-04-29 01:57:57 -04:00
gianfar_mii.h [netdrvr] gianfar: Determine TBIPA value dynamically 2008-04-29 01:57:57 -04:00
gianfar_sysfs.c gianfar: Fix a locking bug in gianfar's sysfs code 2008-05-06 12:01:34 -04:00
hamachi.c net: use get/put_unaligned_* helpers 2008-04-29 08:06:27 -07:00
hp-plus.c
hp.c
hp100.c
hp100.h
hplance.c
hplance.h
hydra.c
ibmlana.c
ibmlana.h
ibmveth.c netdev: use non-racy method for proc entries creation 2008-04-29 08:06:22 -07:00
ibmveth.h
ifb.c
ioc3-eth.c
ipg.c ipg: fix receivemode IPG_RM_RECEIVEMULTICAST{,HASH} in ipg_nic_set_multicast_list() 2008-06-11 22:24:40 -04:00
ipg.h
isa-skeleton.c
iseries_veth.c
jazzsonic.c net drivers: fix platform driver hotplug/coldplug 2008-04-25 02:08:54 -04:00
korina.c korina: misc cleanup 2008-04-25 02:08:51 -04:00
lance.c
lasi_82596.c
lib8390.c
lib82596.c
lne390.c
loopback.c
lp486e.c
mac89x0.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
mac8390.c
macb.c net drivers: fix platform driver hotplug/coldplug 2008-04-25 02:08:54 -04:00
macb.h
mace.c
mace.h
macmace.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
macsonic.c
macvlan.c macvlan: Fix memleak on device removal/crash on module removal 2008-05-08 01:13:31 -07:00
meth.c net drivers: fix platform driver hotplug/coldplug 2008-04-25 02:08:54 -04:00
meth.h
mii.c
mipsnet.c
mv643xx_eth.c mv643xx_eth: inter-mv643xx SMI port sharing 2008-04-28 21:17:07 -07:00
mvme147.c
myri_code.h
myri_sbus.c
myri_sbus.h
natsemi.c natsemi: fix MMIO for PPC 44x platforms 2008-04-17 15:31:31 -04:00
ne-h8300.c
ne.c
ne2.c
ne2k-pci.c
ne3210.c
netconsole.c
netx-eth.c net drivers: fix platform driver hotplug/coldplug 2008-04-25 02:08:54 -04:00
ni52.c
ni52.h
ni65.c
ni65.h
ni5010.c
ni5010.h
niu.c niu: Determine the # of ports from the card's VPD data 2008-05-12 03:10:59 -07:00
niu.h niu: Determine the # of ports from the card's VPD data 2008-05-12 03:10:59 -07:00
ns83820.c
pasemi_mac.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2008-04-21 15:50:49 -07:00
pasemi_mac.h
pasemi_mac_ethtool.c
pci-skeleton.c
pcnet32.c pcnet32: fix warning 2008-05-22 06:03:29 -04:00
plip.c
ppp_async.c tty: add throttle/unthrottle helpers 2008-04-30 08:29:47 -07:00
ppp_deflate.c
ppp_generic.c ppp: Do not free not yet unregistered net device. 2008-05-13 23:51:18 -07:00
ppp_mppe.c
ppp_mppe.h
ppp_synctty.c tty: add throttle/unthrottle helpers 2008-04-30 08:29:47 -07:00
pppoe.c pppoe: Unshare skb before anything else 2008-06-10 14:08:25 -07:00
pppol2tp.c l2tp: Fix potential memory corruption in pppol2tp_recvmsg() 2008-06-10 12:35:00 -07:00
pppox.c
ps3_gelic_net.c
ps3_gelic_net.h
ps3_gelic_wireless.c PS3: gelic: fix memory leak 2008-05-12 21:44:41 -04:00
ps3_gelic_wireless.h
qla3xxx.c
qla3xxx.h
r6040.c drivers/net/r6040.c: correct bad use of round_jiffies() 2008-06-11 22:25:38 -04:00
r8169.c r8169: fix oops in r8169_get_mac_version 2008-04-17 22:48:41 +02:00
rionet.c [RAPIDIO] Auto-probe the RapidIO system size 2008-04-29 19:40:28 +10:00
rrunner.c
rrunner.h
s2io-regs.h S2io: Added napi support when MSIX is enabled. 2008-05-22 06:26:21 -04:00
s2io.c s2io iomem annotations 2008-06-10 18:20:41 -04:00
s2io.h S2io: Added napi support when MSIX is enabled. 2008-05-22 06:26:21 -04:00
saa9730.c
saa9730.h
sb1000.c sb1000.c: make const arrays static 2008-04-16 20:41:44 -04:00
sb1250-mac.c sb1250: use netdev_alloc_skb 2008-05-22 06:18:55 -04:00
sc92031.c sc92031: remove bogus unlikely() 2008-05-30 22:07:17 -04:00
seeq8005.c
seeq8005.h
sgiseeq.c net drivers: fix platform driver hotplug/coldplug 2008-04-25 02:08:54 -04:00
sgiseeq.h
sis190.c sis190: account for Tx errors 2008-04-27 18:19:08 +02:00
sis900.c
sis900.h
skge.c
skge.h
sky2.c sky2: Hold RTNL while calling dev_close() 2008-06-10 18:40:44 -04:00
sky2.h sky2: fix simple define thinko 2008-05-13 01:31:44 -04:00
slhc.c
slip.c tty: The big operations rework 2008-04-30 08:29:47 -07:00
slip.h
smc-mca.c
smc-ultra.c
smc-ultra32.c
smc91x.c net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
smc91x.h Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-04-17 23:56:30 -07:00
smc911x.c net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
smc911x.h
smc9194.c
smc9194.h
sni_82596.c net drivers: fix platform driver hotplug/coldplug 2008-04-25 02:08:54 -04:00
sonic.c
sonic.h
spider_net.c spidernet: revise link status logging 2008-04-16 20:06:50 -04:00
spider_net.h spidernet: change interrupt masks 2008-04-16 20:06:50 -04:00
spider_net_ethtool.c
starfire.c
starfire_firmware.h
starfire_firmware.pl
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
sunbmac.c
sunbmac.h
sundance.c
sungem.c
sungem.h
sungem_phy.c
sungem_phy.h
sunhme.c sunhme: Cleanup use of deprecated calls to save_and_cli and restore_flags. 2008-06-04 12:06:28 -07:00
sunhme.h
sunlance.c
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c tc35815: Statistics cleanup 2008-04-17 15:31:31 -04:00
tehuti.c drivers/net/tehuti: use proper capability check for raw IO access 2008-04-29 11:45:16 -07:00
tehuti.h
tehuti_fw.h
tg3.c tg3: Update version to 3.92.1 2008-06-09 15:41:33 -07:00
tg3.h tg3: Add link state reporting to UMP firmware 2008-05-02 16:49:29 -07:00
tlan.c
tlan.h
tsi108_eth.c net drivers: fix platform driver hotplug/coldplug 2008-04-25 02:08:54 -04:00
tsi108_eth.h
tun.c tun: Multicast handling in tun_chr_ioctl() needs proper locking. 2008-04-24 03:44:43 -07:00
typhoon-firmware.h
typhoon.c [netdrvr] typhoon: typhoon_resume - remove call to start_queue 2008-04-25 02:08:08 -04:00
typhoon.h
ucc_geth.c ucc_geth: Fix arguments to dma map/unmap functions 2008-05-22 06:19:24 -04:00
ucc_geth.h ucc_geth: Fix a bunch of sparse warnings 2008-05-06 12:02:08 -04:00
ucc_geth_ethtool.c ucc_geth_ethtool: Add a missing HW stats counter 2008-05-30 22:07:24 -04:00
ucc_geth_mii.c ucc_geth: Fix a bunch of sparse warnings 2008-05-06 12:02:08 -04:00
ucc_geth_mii.h
veth.c
via-rhine.c
via-velocity.c via-velocity: fix vlan receipt 2008-04-25 02:45:23 -04:00
via-velocity.h
virtio_net.c virtio: use callback on empty in virtio_net 2008-06-10 18:20:32 -04:00
wd.c
xen-netfront.c NETFRONT: Use __skb_queue_purge() 2008-05-22 14:01:03 -04:00
yellowfin.c net: use get/put_unaligned_* helpers 2008-04-29 08:06:27 -07:00
znet.c
zorro8390.c