diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2009-10-27 15:26:50 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-12-11 14:55:18 -0500 |
commit | ed1db3ada189c9af592c4d2971b22b482b68aafe (patch) | |
tree | aa7d98261986c4558a7c38b9047ea9e02342b227 | |
parent | 253e05724f9230910344357b1142ad8642ff9f5a (diff) |
USB: fix a bug in the scatter-gather library
This patch (as1298) fixes a bug in the new scatter-gather URB
facility. If an URB uses a scatterlist then it should not have the
URB_NO_INTERRUPT flag set; otherwise the system won't be notified when
the transfer completes.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Acked-by: David Vrabel <david.vrabel@csr.com>
CC: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/usb/core/message.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index 8d874cad6581..adb9c8ee0c1f 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c | |||
@@ -403,7 +403,7 @@ int usb_sg_init(struct usb_sg_request *io, struct usb_device *dev, | |||
403 | if (!io->urbs) | 403 | if (!io->urbs) |
404 | goto nomem; | 404 | goto nomem; |
405 | 405 | ||
406 | urb_flags = URB_NO_INTERRUPT; | 406 | urb_flags = 0; |
407 | if (dma) | 407 | if (dma) |
408 | urb_flags |= URB_NO_TRANSFER_DMA_MAP; | 408 | urb_flags |= URB_NO_TRANSFER_DMA_MAP; |
409 | if (usb_pipein(pipe)) | 409 | if (usb_pipein(pipe)) |
@@ -435,6 +435,7 @@ int usb_sg_init(struct usb_sg_request *io, struct usb_device *dev, | |||
435 | io->urbs[0]->num_sgs = io->entries; | 435 | io->urbs[0]->num_sgs = io->entries; |
436 | io->entries = 1; | 436 | io->entries = 1; |
437 | } else { | 437 | } else { |
438 | urb_flags |= URB_NO_INTERRUPT; | ||
438 | for_each_sg(sg, sg, io->entries, i) { | 439 | for_each_sg(sg, sg, io->entries, i) { |
439 | unsigned len; | 440 | unsigned len; |
440 | 441 | ||