net: cdc_ether: use dev->intf to get interface information
authorMiguel Rodríguez Pérez <miguel@det.uvigo.gal>
Wed, 15 Jul 2020 18:40:56 +0000 (20:40 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 17 Jul 2020 19:42:47 +0000 (12:42 -0700)
usbnet_cdc_update_filter was getting the interface number from the
usb_interface struct in cdc_state->control. However, cdc_ncm does
not initialize that structure in its bind function, but uses
cdc_ncm_ctx instead. Getting intf directly from struct usbnet solves
the problem.

Signed-off-by: Miguel Rodríguez Pérez <miguel@det.uvigo.gal>
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/cdc_ether.c

index a657943..2afe258 100644 (file)
@@ -65,8 +65,6 @@ static const u8 mbm_guid[16] = {
 
 static void usbnet_cdc_update_filter(struct usbnet *dev)
 {
-       struct cdc_state        *info = (void *) &dev->data;
-       struct usb_interface    *intf = info->control;
        struct net_device       *net = dev->net;
 
        u16 cdc_filter = USB_CDC_PACKET_TYPE_DIRECTED
@@ -86,7 +84,7 @@ static void usbnet_cdc_update_filter(struct usbnet *dev)
                        USB_CDC_SET_ETHERNET_PACKET_FILTER,
                        USB_TYPE_CLASS | USB_RECIP_INTERFACE,
                        cdc_filter,
-                       intf->cur_altsetting->desc.bInterfaceNumber,
+                       dev->intf->cur_altsetting->desc.bInterfaceNumber,
                        NULL,
                        0,
                        USB_CTRL_SET_TIMEOUT