linux/drivers
Alan Stern d5d4db704b USB: replace flush_workqueue with cancel_sync_work
This patch (as912) replaces a couple of calls to flush_workqueue()
with cancel_sync_work() and cancel_rearming_delayed_work().  Using a
more directed approach allows us to avoid some nasty deadlocks.  The
prime example occurs when a first-level device (the parent is a root
hub) is removed while at the same time the root hub gets a remote
wakeup request.  khubd would try to flush the autosuspend workqueue
while holding the root-hub's lock, and the remote-wakeup workqueue
routine would be waiting to lock the root hub.

The patch also reorganizes the power management portion of
usb_disconnect(), separating it out into its own routine.  The
autosuspend workqueue entry is cancelled immediately instead of
waiting for the device's release routine.  In addition,
synchronization with the autosuspend thread is carried out even for
root hubs (an oversight in the original code).

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Greg KH <gregkh@suse.de>
Cc: Mark Lord <lkml@rtr.ca>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-29 13:39:07 -07:00
..
acorn
acpi acpi: fix potential call to a freed memory section. 2007-05-17 05:23:04 -07:00
amba
ata pata_hpt37x: Further improvements based on the IDE updates and vendor drivers 2007-05-25 17:29:59 -04:00
atm [ATM]: Use mutex instead of binary semaphore in idt77252 driver. 2007-05-24 16:36:45 -07:00
auxdisplay
base Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
block Off by one in floppy.c 2007-05-23 20:14:15 -07:00
bluetooth [Bluetooth] Always send HCI_Reset for Broadcom devices 2007-05-24 14:26:15 +02:00
cdrom
char Char: cyclades, fix deadlock 2007-05-23 20:14:13 -07:00
clocksource
connector
cpufreq
crypto [CRYPTO] geode: Fix in-place operations and set key 2007-05-24 21:23:24 +10:00
dio
dma
edac
eisa
fc4
firewire
firmware
hid
hwmon applesmc - sensors patch missing from 2.6.22-rc2 2007-05-23 20:14:15 -07:00
i2c i2c-s3c2410: Fix build warning 2007-05-22 19:49:16 +02:00
ide ide serverworks warning fixes 2007-05-24 02:42:39 +02:00
ieee1394
infiniband IPoIB/cm: Drain cq in ipoib_cm_dev_stop() 2007-05-24 14:02:40 -07:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2007-05-23 08:11:43 -07:00
isdn drivers/isdn/hardware/eicon/message.c warning fixes 2007-05-23 20:14:15 -07:00
kvm Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
leds
macintosh Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2007-05-23 08:11:43 -07:00
mca
md md: fix bug with linear hot-add and elsewhere 2007-05-23 20:14:14 -07:00
media V4L/DVB (5691): Ov7670: reset clkrc in rgb565 mode 2007-05-22 16:16:29 -03:00
message i2o: eliminate a peculiar constraint on i2o_max_drivers 2007-05-23 20:14:14 -07:00
mfd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2007-05-23 08:11:43 -07:00
misc Misc: phantom, take care of pci posting 2007-05-23 20:14:14 -07:00
mmc mmc: clean up unused parts of block driver 2007-05-24 06:51:02 +02:00
mtd Remove SLAB_CTOR_CONSTRUCTOR 2007-05-17 05:23:04 -07:00
net Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2007-05-24 18:41:28 -07:00
nubus
oprofile Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
parisc
parport parport_pc needs dma-mapping.h 2007-05-16 21:19:15 -07:00
pci Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
pcmcia
pnp
ps3
rapidio
rtc rtc kconfig clarification 2007-05-17 05:23:05 -07:00
s390
sbus
scsi Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
serial Merge master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-21 10:00:22 -07:00
sh
sn
spi omap_uwire: SPI_CPHA mode bugfix 2007-05-23 20:14:15 -07:00
tc
telephony
usb USB: replace flush_workqueue with cancel_sync_work 2007-05-29 13:39:07 -07:00
video imxfb: fix memory hole 2007-05-23 20:14:13 -07:00
w1
zorro
Kconfig
Makefile