usb: wusbcore: change WA_SEGS_MAX to a legal value
authorThomas Pugliese <thomas.pugliese@gmail.com>
Wed, 23 Oct 2013 19:44:29 +0000 (14:44 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 29 Oct 2013 23:44:49 +0000 (16:44 -0700)
change WA_SEGS_MAX to a number that is legal according to the WUSB
spec.

Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/wusbcore/wa-xfer.c

index 090ac308c7567930486e2564e66b79a3866b0c14..ed5abe87b0496f1329f3eefada1b636a9151fb70 100644 (file)
@@ -91,7 +91,8 @@
 #include "wusbhc.h"
 
 enum {
-       WA_SEGS_MAX = 255,
+       /* [WUSB] section 8.3.3 allocates 7 bits for the segment index. */
+       WA_SEGS_MAX = 128,
 };
 
 enum wa_seg_status {
@@ -588,7 +589,7 @@ static ssize_t __wa_xfer_setup_sizes(struct wa_xfer *xfer,
                        xfer->segs = 1;
        }
 
-       if (xfer->segs >= WA_SEGS_MAX) {
+       if (xfer->segs > WA_SEGS_MAX) {
                dev_err(dev, "BUG? oops, number of segments %zu bigger than %d\n",
                        (urb->transfer_buffer_length/xfer->seg_size),
                        WA_SEGS_MAX);