linux/drivers/usb/core
Alan Stern 3e2003cccc USB: usbfs: allow URBs to be reaped after disconnection
[ Upstream commit 3f2cee73b6 ]

The usbfs API has a peculiar hole: Users are not allowed to reap their
URBs after the device has been disconnected.  There doesn't seem to be
any good reason for this; it is an ad-hoc inconsistency.

The patch allows users to issue the USBDEVFS_REAPURB and
USBDEVFS_REAPURBNDELAY ioctls (together with their 32-bit counterparts
on 64-bit systems) even after the device is gone.  If no URBs are
pending for a disconnected device then the ioctls will return -ENODEV
rather than -EAGAIN, because obviously no new URBs will ever be able
to complete.

The patch also adds a new capability flag for
USBDEVFS_GET_CAPABILITIES to indicate that the reap-after-disconnect
feature is supported.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Tested-by: Chris Dickens <christopher.a.dickens@gmail.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2015-08-04 14:38:38 -04:00
..
buffer.c usb: core: buffer: smallest buffer should start at ARCH_DMA_MINALIGN 2015-03-06 14:53:00 -08:00
config.c usb-core bInterval quirk 2014-08-01 15:47:05 -07:00
devices.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-02-26 20:16:07 -08:00
devio.c USB: usbfs: allow URBs to be reaped after disconnection 2015-08-04 14:38:38 -04:00
driver.c USB: add flag for HCDs that can't receive wakeup requests (isp1760-hcd) 2015-03-06 14:53:00 -08:00
endpoint.c USB: core: be specific about attribute permissions 2013-08-25 15:12:03 -07:00
file.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-11-13 15:34:18 +09:00
generic.c staging: usbip: convert usbip-host driver to usb_device_driver 2014-02-07 10:54:30 -08:00
hcd-pci.c USB: core: hcd-pci: free IRQ before disabling PCI device when shutting down 2014-07-22 16:30:58 -07:00
hcd.c USB: fix use-after-free bug in usb_hcd_unlink_urb() 2015-03-06 14:53:00 -08:00
hub.c usb: core: Fix USB 3.0 devices lost in NOTATTACHED state after a hub port reset 2015-07-03 23:02:22 -04:00
hub.h usb: hub: convert khubd into workqueue 2014-09-23 22:33:19 -07:00
Kconfig usb: core: Kconfig: TPL should apply for both OTG and EH 2014-09-23 21:28:41 -07:00
Makefile USB: core: remove CONFIG_USB_DEBUG usage 2013-12-21 16:01:00 -08:00
message.c USB: don't cancel queued resets when unbinding drivers 2015-03-06 14:53:00 -08:00
notify.c usb: Add export.h for EXPORT_SYMBOL/THIS_MODULE where needed 2011-10-31 19:31:25 -04:00
otg_whitelist.h USB: Add OTG PET device to TPL 2015-02-05 22:36:04 -08:00
port.c usb: force warm reset to break link re-connect livelock 2014-07-09 15:43:12 -07:00
quirks.c USB: Add OTG PET device to TPL 2015-02-05 22:36:04 -08:00
sysfs.c USB: core: correct spelling mistakes in comments and warning 2014-01-07 16:17:40 -08:00
urb.c usb: core: allow zero packet flag for interrupt urbs 2014-07-22 16:30:58 -07:00
usb-acpi.c usb: find internal hub tier mismatch via acpi 2014-05-27 16:38:52 -07:00
usb.c usb: core: buffer: smallest buffer should start at ARCH_DMA_MINALIGN 2015-03-06 14:53:00 -08:00
usb.h usb: hub: rename usb_kick_khubd() to usb_kick_hub_wq() 2014-09-23 22:33:19 -07:00