USB: cdc-wdm: better allocate a buffer that is at least as big as we tell the USB...
authorBjørn Mork <bjorn@mork.no>
Mon, 16 Jan 2012 14:11:59 +0000 (15:11 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 24 Jan 2012 22:33:50 +0000 (14:33 -0800)
As it turns out, there was a mismatch between the allocated inbuf size
(desc->bMaxPacketSize0, typically something like 64) and the length we
specified in the URB (desc->wMaxCommand, typically something like 2048)

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Cc: Oliver Neukum <oliver@neukum.org>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/class/cdc-wdm.c

index 9734863a3a49fa110a666b0f60dbf77e4d6267e7..846dfa6034472db2fd4cbb303e96904b0bfebdf6 100644 (file)
@@ -696,7 +696,7 @@ next_desc:
                goto err;
 
        desc->inbuf = usb_alloc_coherent(interface_to_usbdev(intf),
-                                        desc->bMaxPacketSize0,
+                                        desc->wMaxCommand,
                                         GFP_KERNEL,
                                         &desc->response->transfer_dma);
        if (!desc->inbuf)