aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/can/usb/peak_usb/pcan_usb_core.c6
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:
870static void peak_usb_disconnect(struct usb_interface *intf) 870static 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