diff options
author | Oliver Neukum <oliver@neukum.org> | 2008-07-29 15:26:15 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-10-17 14:40:51 -0700 |
commit | 55b447bf79ad25591437d24b78caa9d0ae4fec82 (patch) | |
tree | f8b84be61cf96a993664f35f572d8ddf6e618d39 /include/linux/usb.h | |
parent | 49b707b90c7f7260beb8691fc5d99d71a5549ec0 (diff) | |
download | lwn-55b447bf79ad25591437d24b78caa9d0ae4fec82.tar.gz lwn-55b447bf79ad25591437d24b78caa9d0ae4fec82.zip |
USB: kill URBs permanently
looking at usb_kill_urb() it seems to me that it is unnecessarily lenient.
In the use case of disconnect() you never want to use the URB again
(for the same device) But leaving urb->reject elevated will make it easier
to avoid races between read/write and disconnect.
Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux/usb.h')
-rw-r--r-- | include/linux/usb.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h index 94ac74aba6b6..3371c91e7ff4 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h @@ -1459,6 +1459,8 @@ extern struct urb *usb_get_urb(struct urb *urb); extern int usb_submit_urb(struct urb *urb, gfp_t mem_flags); extern int usb_unlink_urb(struct urb *urb); extern void usb_kill_urb(struct urb *urb); +extern void usb_poison_urb(struct urb *urb); +extern void usb_unpoison_urb(struct urb *urb); extern void usb_kill_anchored_urbs(struct usb_anchor *anchor); extern void usb_unlink_anchored_urbs(struct usb_anchor *anchor); extern void usb_anchor_urb(struct urb *urb, struct usb_anchor *anchor); |