aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/misc/usbtest.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/misc/usbtest.c')
-rw-r--r--drivers/usb/misc/usbtest.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
index 92fdb6e9faff..6b978f04b8d7 100644
--- a/drivers/usb/misc/usbtest.c
+++ b/drivers/usb/misc/usbtest.c
@@ -287,6 +287,9 @@ static struct urb *usbtest_alloc_urb(
287 if (usb_pipein(pipe)) 287 if (usb_pipein(pipe))
288 urb->transfer_flags |= URB_SHORT_NOT_OK; 288 urb->transfer_flags |= URB_SHORT_NOT_OK;
289 289
290 if ((bytes + offset) == 0)
291 return urb;
292
290 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) 293 if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)
291 urb->transfer_buffer = usb_alloc_coherent(udev, bytes + offset, 294 urb->transfer_buffer = usb_alloc_coherent(udev, bytes + offset,
292 GFP_KERNEL, &urb->transfer_dma); 295 GFP_KERNEL, &urb->transfer_dma);
@@ -529,6 +532,7 @@ static struct scatterlist *
529alloc_sglist(int nents, int max, int vary, struct usbtest_dev *dev, int pipe) 532alloc_sglist(int nents, int max, int vary, struct usbtest_dev *dev, int pipe)
530{ 533{
531 struct scatterlist *sg; 534 struct scatterlist *sg;
535 unsigned int n_size = 0;
532 unsigned i; 536 unsigned i;
533 unsigned size = max; 537 unsigned size = max;
534 unsigned maxpacket = 538 unsigned maxpacket =
@@ -561,7 +565,8 @@ alloc_sglist(int nents, int max, int vary, struct usbtest_dev *dev, int pipe)
561 break; 565 break;
562 case 1: 566 case 1:
563 for (j = 0; j < size; j++) 567 for (j = 0; j < size; j++)
564 *buf++ = (u8) ((j % maxpacket) % 63); 568 *buf++ = (u8) (((j + n_size) % maxpacket) % 63);
569 n_size += size;
565 break; 570 break;
566 } 571 }
567 572