USB: composite: Fix USB WHQL Certification Issues
authorJared Suttles <jared.suttles@motorola.com>
Fri, 7 Aug 2009 23:57:49 +0000 (18:57 -0500)
committerArve Hjønnevåg <arve@android.com>
Mon, 8 Feb 2010 23:09:01 +0000 (15:09 -0800)
Submitted on behalf of RaviKumar Vembu <ravi.v@motorola.com>
Signed-off-by: Jared Suttles <jared.suttles@motorola.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>
drivers/usb/gadget/composite.c

index 9c333f1cc62a5626c1537f7b4d5a9a682b895b3f..7e2dacc7974d3aa2e2465ca4b3a5884c461a78fc 100644 (file)
@@ -765,11 +765,11 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
        case USB_REQ_GET_CONFIGURATION:
                if (ctrl->bRequestType != USB_DIR_IN)
                        goto unknown;
-               if (cdev->config)
+               if (cdev->config) {
                        *(u8 *)req->buf = cdev->config->bConfigurationValue;
-               else
+                       value = min(w_length, (u16) 1);
+               } else
                        *(u8 *)req->buf = 0;
-               value = min(w_length, (u16) 1);
                break;
 
        /* function drivers must handle get/set altsetting; if there's
@@ -819,6 +819,9 @@ unknown:
                 */
                if ((ctrl->bRequestType & USB_RECIP_MASK)
                                == USB_RECIP_INTERFACE) {
+                       if (cdev->config == NULL)
+                               return value;
+
                        f = cdev->config->interface[intf];
                        if (f && f->setup)
                                value = f->setup(f, ctrl);