aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2009-10-27 15:26:50 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-12-11 14:55:18 -0500
commited1db3ada189c9af592c4d2971b22b482b68aafe (patch)
treeaa7d98261986c4558a7c38b9047ea9e02342b227
parent253e05724f9230910344357b1142ad8642ff9f5a (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.c3
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