usb: gadget: Fix OS descriptors support
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 27 Jun 2018 02:33:56 +0000 (12:33 +1000)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Tue, 17 Jul 2018 07:12:51 +0000 (10:12 +0300)
The current code is broken as it re-defines "req" inside the
if block, then goto out of it. Thus the request that ends
up being sent is not the one that was populated by the
code in question.

This fixes RNDIS driver autodetect by Windows 10 for me.

The bug was introduced by Chris rework to remove the local
queuing inside the if { } block of the redefined request.

Fixes: 636ba13aec8a ("usb: gadget: composite: remove duplicated code in OS desc handling")
Cc: <stable@vger.kernel.org> # v4.17
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/gadget/composite.c

index d2fa071c21b17a1c0c03fbcf1db416d311e82a12..b8a15840b4ffd574430cdc5d0e57e74a3c116242 100644 (file)
@@ -1819,7 +1819,6 @@ unknown:
                if (cdev->use_os_string && cdev->os_desc_config &&
                    (ctrl->bRequestType & USB_TYPE_VENDOR) &&
                    ctrl->bRequest == cdev->b_vendor_code) {
-                       struct usb_request              *req;
                        struct usb_configuration        *os_desc_cfg;
                        u8                              *buf;
                        int                             interface;