2008-03-13 15:56:35

by Ingo van Lil

[permalink] [raw]
Subject: [PATCH] Fix nested switch statements in dummy_hcd.c

Hello everybody,

this patch fixes a messed up combination of two nested switch statements
in drivers/usb/gadget/dummy_hcd.c. According to the USB spec (section
5.8.3) the maximum packet size for bulk endpoints can be 512 for
high-speed devices and 8, 16, 32 or 64 for full-speed devices. Low-speed
devices must not have bulk endpoints.

Cheers,
Ingo


Signed-off-by: Ingo van Lil <[email protected]>
---

--- linux-2.6.23.1/drivers/usb/gadget/dummy_hcd.c.orig 2008-03-13 15:45:35.000000000 +0100
+++ linux-2.6.23.1/drivers/usb/gadget/dummy_hcd.c 2008-03-13 15:45:39.000000000 +0100
@@ -363,16 +363,14 @@
case USB_SPEED_HIGH:
if (max == 512)
break;
- /* conserve return statements */
- default:
- switch (max) {
- case 8: case 16: case 32: case 64:
+ goto done;
+ case USB_SPEED_FULL:
+ if (max == 8 || max == 16 || max == 32 || max == 64)
/* we'll fake any legal size */
break;
- default:
- case USB_SPEED_LOW:
- goto done;
- }
+ /* save a return statement */
+ default:
+ goto done;
}
break;
case USB_ENDPOINT_XFER_INT: