USB: use standard SG iterator in the scatter-gather library
This patch (as1103) changes the iteration in the USB scatter-gather to use a standard SG iterator. Otherwise the iteration will fail if it encounters a chained SG list. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Acked-by: Jens Axboe <jens.axboe@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
625f694936
commit
7c3e28bc56
|
@ -400,7 +400,7 @@ int usb_sg_init(struct usb_sg_request *io, struct usb_device *dev,
|
||||||
if (usb_pipein(pipe))
|
if (usb_pipein(pipe))
|
||||||
urb_flags |= URB_SHORT_NOT_OK;
|
urb_flags |= URB_SHORT_NOT_OK;
|
||||||
|
|
||||||
for (i = 0; i < io->entries; i++) {
|
for_each_sg(sg, sg, io->entries, i) {
|
||||||
unsigned len;
|
unsigned len;
|
||||||
|
|
||||||
io->urbs[i] = usb_alloc_urb(0, mem_flags);
|
io->urbs[i] = usb_alloc_urb(0, mem_flags);
|
||||||
|
@ -434,17 +434,17 @@ int usb_sg_init(struct usb_sg_request *io, struct usb_device *dev,
|
||||||
* to prevent stale pointers and to help spot bugs.
|
* to prevent stale pointers and to help spot bugs.
|
||||||
*/
|
*/
|
||||||
if (dma) {
|
if (dma) {
|
||||||
io->urbs[i]->transfer_dma = sg_dma_address(sg + i);
|
io->urbs[i]->transfer_dma = sg_dma_address(sg);
|
||||||
len = sg_dma_len(sg + i);
|
len = sg_dma_len(sg);
|
||||||
#if defined(CONFIG_HIGHMEM) || defined(CONFIG_GART_IOMMU)
|
#if defined(CONFIG_HIGHMEM) || defined(CONFIG_GART_IOMMU)
|
||||||
io->urbs[i]->transfer_buffer = NULL;
|
io->urbs[i]->transfer_buffer = NULL;
|
||||||
#else
|
#else
|
||||||
io->urbs[i]->transfer_buffer = sg_virt(&sg[i]);
|
io->urbs[i]->transfer_buffer = sg_virt(sg);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
/* hc may use _only_ transfer_buffer */
|
/* hc may use _only_ transfer_buffer */
|
||||||
io->urbs[i]->transfer_buffer = sg_virt(&sg[i]);
|
io->urbs[i]->transfer_buffer = sg_virt(sg);
|
||||||
len = sg[i].length;
|
len = sg->length;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (length) {
|
if (length) {
|
||||||
|
|
Loading…
Reference in New Issue