diff options
-rw-r--r-- | drivers/net/can/usb/peak_usb/pcan_usb_core.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.c b/drivers/net/can/usb/peak_usb/pcan_usb_core.c index f3141ca56bc3..0b0302af3bd2 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c | |||
@@ -870,23 +870,25 @@ lbl_free_candev: | |||
870 | static void peak_usb_disconnect(struct usb_interface *intf) | 870 | static void peak_usb_disconnect(struct usb_interface *intf) |
871 | { | 871 | { |
872 | struct peak_usb_device *dev; | 872 | struct peak_usb_device *dev; |
873 | struct peak_usb_device *dev_prev_siblings; | ||
873 | 874 | ||
874 | /* unregister as many netdev devices as siblings */ | 875 | /* unregister as many netdev devices as siblings */ |
875 | for (dev = usb_get_intfdata(intf); dev; dev = dev->prev_siblings) { | 876 | for (dev = usb_get_intfdata(intf); dev; dev = dev_prev_siblings) { |
876 | struct net_device *netdev = dev->netdev; | 877 | struct net_device *netdev = dev->netdev; |
877 | char name[IFNAMSIZ]; | 878 | char name[IFNAMSIZ]; |
878 | 879 | ||
880 | dev_prev_siblings = dev->prev_siblings; | ||
879 | dev->state &= ~PCAN_USB_STATE_CONNECTED; | 881 | dev->state &= ~PCAN_USB_STATE_CONNECTED; |
880 | strncpy(name, netdev->name, IFNAMSIZ); | 882 | strncpy(name, netdev->name, IFNAMSIZ); |
881 | 883 | ||
882 | unregister_netdev(netdev); | 884 | unregister_netdev(netdev); |
883 | free_candev(netdev); | ||
884 | 885 | ||
885 | kfree(dev->cmd_buf); | 886 | kfree(dev->cmd_buf); |
886 | dev->next_siblings = NULL; | 887 | dev->next_siblings = NULL; |
887 | if (dev->adapter->dev_free) | 888 | if (dev->adapter->dev_free) |
888 | dev->adapter->dev_free(dev); | 889 | dev->adapter->dev_free(dev); |
889 | 890 | ||
891 | free_candev(netdev); | ||
890 | dev_info(&intf->dev, "%s removed\n", name); | 892 | dev_info(&intf->dev, "%s removed\n", name); |
891 | } | 893 | } |
892 | 894 | ||