Commit e9238221 authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman

USB: dummy-hcd: accept mismatch between wLength and transfer length

This patch (as1269) fixes a bug in the way dummy_hcd handles control
URBs.  Currently it returns a -EOVERFLOW error if the wLength value in
the setup packet is different from the URB's transfer_buffer_length.

Other host controller drivers don't do this.  There's no reason the
two length values have to be equal, and in fact they sometimes aren't
-- a driver might set the transfer length to the maxpacket value in
order to handle buggy devices that don't respect wLength.

This patch simply removes the unnecessary check and error return.
Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 527101ce
...@@ -1306,11 +1306,6 @@ static void dummy_timer (unsigned long _dum) ...@@ -1306,11 +1306,6 @@ static void dummy_timer (unsigned long _dum)
setup = *(struct usb_ctrlrequest*) urb->setup_packet; setup = *(struct usb_ctrlrequest*) urb->setup_packet;
w_index = le16_to_cpu(setup.wIndex); w_index = le16_to_cpu(setup.wIndex);
w_value = le16_to_cpu(setup.wValue); w_value = le16_to_cpu(setup.wValue);
if (le16_to_cpu(setup.wLength) !=
urb->transfer_buffer_length) {
status = -EOVERFLOW;
goto return_urb;
}
/* paranoia, in case of stale queued data */ /* paranoia, in case of stale queued data */
list_for_each_entry (req, &ep->queue, queue) { list_for_each_entry (req, &ep->queue, queue) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment