USB: usbfs: allow URBs to be reaped after disconnection
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>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
17136d4984
commit
3f2cee73b6
@@ -128,11 +128,12 @@ struct usbdevfs_hub_portinfo {
|
||||
char port [127]; /* e.g. port 3 connects to device 27 */
|
||||
};
|
||||
|
||||
/* Device capability flags */
|
||||
/* System and bus capability flags */
|
||||
#define USBDEVFS_CAP_ZERO_PACKET 0x01
|
||||
#define USBDEVFS_CAP_BULK_CONTINUATION 0x02
|
||||
#define USBDEVFS_CAP_NO_PACKET_SIZE_LIM 0x04
|
||||
#define USBDEVFS_CAP_BULK_SCATTER_GATHER 0x08
|
||||
#define USBDEVFS_CAP_REAP_AFTER_DISCONNECT 0x10
|
||||
|
||||
/* USBDEVFS_DISCONNECT_CLAIM flags & struct */
|
||||
|
||||
|
Reference in New Issue
Block a user