linux/drivers
Alan Stern 6ff1046409 USB: usbfs: keep async URBs until the device file is closed
The usbfs driver manages a list of completed asynchronous URBs.  But
it is too eager to free the entries on this list: destroy_async() gets
called whenever an interface is unbound or a device is removed, and it
deallocates the outstanding struct async entries for all URBs on that
interface or device.  This is wrong; the user program should be able
to reap an URB any time after it has completed, regardless of whether
or not the interface is still bound or the device is still present.

This patch (as1222) moves the code for deallocating the completed list
entries from destroy_async() to usbdev_release().  The outstanding
entries won't be freed until the user program has closed the device
file, thereby eliminating any possibility that the remaining URBs
might still be reaped.

This fixes a bug in which a program can hang in the USBDEVFS_REAPURB
ioctl when the device is unplugged.

Reported-and-tested-by: Martin Poupe <martin.poupe@upek.com>
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-03-17 14:01:28 -07:00
..
accessibility
acpi acpi: check for pxm_to_node_map overflow 2009-03-16 00:35:30 -04:00
amba
ata ata_piix: add workaround for Samsung DB-P70 2009-03-13 14:56:07 -04:00
atm ATM: misplaced parentheses? 2009-02-18 17:41:38 -08:00
auxdisplay
base mm: get_nid_for_pfn() returns int 2009-03-10 15:55:10 -07:00
block Fix Xilinx SystemACE driver to handle empty CF slot 2009-03-14 21:06:52 +01:00
bluetooth
cdrom
char parisc: remove klist iterators 2009-03-13 01:16:58 -04:00
clocksource
connector
cpufreq Revert "[CPUFREQ] Disable sysfs ui for p4-clockmod." 2009-03-09 15:07:33 -04:00
cpuidle
crypto crypto: ixp4xx - Fix qmgr_request_queue build failure 2009-03-04 08:01:22 +08:00
dca I/OAT: update driver version and copyright dates 2009-03-04 16:04:40 -07:00
dio
dma Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2009-03-08 10:23:05 -07:00
edac powerpc: More printing warning fixes for the l64 to ll64 conversion 2009-01-28 17:15:52 +11:00
eisa
firewire firewire: core: Remove card from list of cards when enable fails 2009-02-01 11:17:24 +01:00
firmware Bernhard has moved 2009-02-18 15:37:56 -08:00
gpio gpiolib: fix request related issue 2009-01-29 18:04:43 -08:00
gpu drm/i915: fix 945 fence register writes for fence 8 and above. 2009-03-11 11:02:06 -07:00
hid HID: move tmff and zpff devices from ignore_list to blacklist 2009-02-17 13:25:01 +01:00
hwmon hwmon: (f75375s) Remove unnecessary and confusing initialization 2009-03-12 13:36:39 +01:00
i2c Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-03-03 14:12:41 -08:00
ide ide: save the returned value of dma_map_sg 2009-03-13 21:16:13 +01:00
idle
ieee1394 Make ieee1394_init a fs-initcall 2009-02-26 10:32:31 -08:00
infiniband RDMA/nes: Don't allow userspace QPs to use STag zero 2009-03-12 16:21:41 -07:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2009-03-02 15:43:03 -08:00
isdn ISDN: fix sc/shmem printk format warning 2009-02-20 00:54:44 -08:00
leds
lguest lguest: fix for CONFIG_SPARSE_IRQ=y 2009-03-09 10:06:29 +10:30
macintosh
mca
md dm crypt: wait for endio to complete before destruction 2009-03-16 17:44:36 +00:00
media V4L/DVB (10978): Report tuning algorith correctly 2009-03-13 13:19:42 -03:00
memstick
message [SCSI] mpt: fix disable lsi sas to use msi as default 2009-02-22 08:51:07 -06:00
mfd mfd: add support for WM8351 revision B 2009-03-12 16:20:24 -07:00
misc hpilo: new pci device 2009-02-27 16:26:22 -08:00
mmc mmc: s3cmci: fix s3c2410_dma_config() arguments. 2009-03-12 16:20:24 -07:00
mtd mtd: physmap: fix NULL pointer dereference in error path 2009-03-10 15:55:11 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-03-16 07:56:58 -07:00
nubus
of
oprofile
parisc parisc: sba_iommu: fix build bug when CONFIG_PARISC_AGP=y 2009-03-15 13:36:22 -07:00
parport m68k: atari - Rename "mfp" to "st_mfp" 2009-02-22 09:23:02 -08:00
pci PCIe: portdrv: call pci_disable_device during remove 2009-03-12 15:42:35 -04:00
pcmcia
platform acpi-wmi: unsigned cannot be less than 0 2009-03-16 00:38:24 -04:00
pnp
power ds2760_battery.c: fix division by zero 2009-03-12 16:20:23 -07:00
ps3
rapidio
regulator leds: Fix bounds checking of wm8350->pmic.led 2009-01-30 21:50:49 +00:00
rtc rtc: t reaches -1, tested 0 2009-02-11 14:25:36 -08:00
s390 [S390] fix "mem=" handling in case of standby memory 2009-02-19 15:19:19 +01:00
sbus sparc64: wait_event_interruptible_timeout may return -ERESTARTSYS 2009-03-04 00:19:28 -08:00
scsi Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 2009-03-14 12:01:37 -07:00
serial Merge branch 'sh/for-2.6.29' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2009-02-27 16:40:00 -08:00
sh
sn
spi spi-gpio: sanitize MISO bitvalue 2009-02-18 15:37:56 -08:00
ssb
staging Staging: w35und: fix usb_control_msg() error handling in wb35_probe() 2009-02-27 12:56:24 -08:00
tc
telephony
thermal
uio
usb USB: usbfs: keep async URBs until the device file is closed 2009-03-17 14:01:28 -07:00
uwb uwb: lock rc->rsvs_lock with spin_lock_bh() 2009-01-23 12:57:20 +00:00
video linux.conf.au 2009: Tuz 2009-03-16 07:55:37 -07:00
virtio virtio-pci: do not oops on config change if driver not loaded 2009-02-02 19:17:56 -08:00
w1 drivers/w1/masters/w1-gpio.c: fix read_bit() 2009-03-12 16:20:23 -07:00
watchdog [WATCHDOG] orion5x_wdt.c: 'ORION5X_TCLK' undeclared 2009-03-05 19:25:05 +00:00
xen PM: Split up sysdev_[suspend|resume] from device_power_[down|up] 2009-02-22 10:33:44 -08:00
zorro
Kconfig
Makefile