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 [S390] Kconfig: refine depends statements. 2007-05-10 15:46:07 +02:00
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 mm: remove destroy_dirty_buffers from invalidate_bdev() 2007-05-07 12:12:55 -07:00
char Char: cyclades, fix deadlock 2007-05-23 20:14:13 -07:00
clocksource
connector
cpufreq Add suspend-related notifications for CPU hotplug 2007-05-09 12:30:56 -07:00
crypto [CRYPTO] geode: Fix in-place operations and set key 2007-05-24 21:23:24 +10:00
dio
dma [S390] Kconfig: unwanted menus for s390. 2007-05-10 15:46:07 +02:00
edac [S390] Kconfig: menus with depends on HAS_IOMEM. 2007-05-10 15:46:07 +02:00
eisa virtual_eisa_root_init() should be __init 2007-05-08 11:15:02 -07:00
fc4
firewire missing mm.h in fw-ohci 2007-05-15 18:56:37 -07:00
firmware remove "struct subsystem" as it is no longer needed 2007-05-02 18:57:59 -07:00
hid USB HID: hiddev - fix race between hiddev_send_event() and hiddev_release() 2007-05-10 08:45:56 +02:00
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 Merge branch 'juju' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2007-05-10 13:30:08 -07:00
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 [S390] Kconfig: menus with depends on HAS_IOMEM. 2007-05-10 15:46:07 +02:00
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 mca: add integrated device bus matching 2007-05-09 12:30:49 -07:00
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 header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
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 fix hotplug for legacy platform drivers 2007-05-08 11:15:10 -07:00
pnp [S390] Kconfig: menus with depends on HAS_IOMEM. 2007-05-10 15:46:07 +02:00
ps3 Merge branch 'linux-2.6' 2007-05-08 13:37:51 +10:00
rapidio
rtc rtc kconfig clarification 2007-05-17 05:23:05 -07:00
s390 [S390] Kconfig: use common Kconfig files for s390. 2007-05-10 15:46:08 +02:00
sbus [SPARC] SBUS: display7seg.c needs asm/io.h 2007-05-13 22:22:47 -07:00
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 [S390] Kconfig: menus with depends on HAS_IOMEM. 2007-05-10 15:46:07 +02:00
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 [S390] Kconfig: menus with depends on HAS_IOMEM. 2007-05-10 15:46:07 +02:00
zorro Amiga Zorro bus: kill resource_size_t warnings 2007-05-04 17:59:08 -07:00
Kconfig
Makefile Merge branch 'juju' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2007-05-10 13:30:08 -07:00