USB: dbgp gadget: fix return value of dbgp_setup
authorSven Schnelle <svens@stackframe.org>
Wed, 23 Mar 2011 20:36:17 +0000 (21:36 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 30 Apr 2011 00:24:30 +0000 (17:24 -0700)
Current code returns 0 even if it can't handle the request.
This leads to timeouts when an unhandled request is sent:

Bus 001 Device 003: ID 0525:c0de Netchip Technology, Inc.
Device Descriptor:
[..]
can't get device qualifier: Connection timed out
[..]

change the code to return EOPNOTSUPP in such cases.

Signed-off-by: Sven Schnelle <svens@stackframe.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/gadget/dbgp.c

index e5ac8a3..2932b48 100644 (file)
@@ -350,9 +350,9 @@ static int dbgp_setup(struct usb_gadget *gadget,
        u8 request = ctrl->bRequest;
        u16 value = le16_to_cpu(ctrl->wValue);
        u16 length = le16_to_cpu(ctrl->wLength);
-       int err = 0;
-       void *data;
-       u16 len;
+       int err = -EOPNOTSUPP;
+       void *data = NULL;
+       u16 len = 0;
 
        gadget->ep0->driver_data = gadget;
 
@@ -371,10 +371,9 @@ static int dbgp_setup(struct usb_gadget *gadget,
                default:
                        goto fail;
                }
+               err = 0;
        } else if (request == USB_REQ_SET_FEATURE &&
                   value == USB_DEVICE_DEBUG_MODE) {
-               len = 0;
-               data = NULL;
                dev_dbg(&dbgp.gadget->dev, "setup: feat debug\n");
 #ifdef CONFIG_USB_G_DBGP_PRINTK
                err = dbgp_enable_ep();