usb: gadget: f_rndis: fix interface id for OS descriptors
authorAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Tue, 1 Jul 2014 13:47:47 +0000 (15:47 +0200)
committerFelipe Balbi <balbi@ti.com>
Wed, 16 Jul 2014 17:58:20 +0000 (12:58 -0500)
f->os_desc_table[0].if_id is zero by default. If the actual id happens
to be different then no Feature Descriptors will be returned to the host
for this interface, so assign if_id as soon as it is known.

Cc: <stable@vger.kernel.org> # v3.16
Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/gadget/function/f_rndis.c

index eed3ad8780478e23bcaf07402d1f658914d1d484..a7b6bbbd697d49f74219e095a6922c41e382a056 100644 (file)
@@ -727,6 +727,10 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
        rndis_control_intf.bInterfaceNumber = status;
        rndis_union_desc.bMasterInterface0 = status;
 
+       if (cdev->use_os_string)
+               f->os_desc_table[0].if_id =
+                       rndis_iad_descriptor.bFirstInterface;
+
        status = usb_interface_id(c, f);
        if (status < 0)
                goto fail;