diff options
Diffstat (limited to 'drivers/net/can')
| -rw-r--r-- | drivers/net/can/dev.c | 3 | ||||
| -rw-r--r-- | drivers/net/can/peak_canfd/peak_canfd.c | 2 | ||||
| -rw-r--r-- | drivers/net/can/slcan.c | 7 | ||||
| -rw-r--r-- | drivers/net/can/usb/gs_usb.c | 2 | ||||
| -rw-r--r-- | drivers/net/can/usb/peak_usb/pcan_usb_core.c | 4 | ||||
| -rw-r--r-- | drivers/net/can/vcan.c | 4 | ||||
| -rw-r--r-- | drivers/net/can/vxcan.c | 4 |
7 files changed, 14 insertions, 12 deletions
diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c index 611d16a7061d..ae4ed03dc642 100644 --- a/drivers/net/can/dev.c +++ b/drivers/net/can/dev.c | |||
| @@ -391,6 +391,9 @@ void can_change_state(struct net_device *dev, struct can_frame *cf, | |||
| 391 | can_update_state_error_stats(dev, new_state); | 391 | can_update_state_error_stats(dev, new_state); |
| 392 | priv->state = new_state; | 392 | priv->state = new_state; |
| 393 | 393 | ||
| 394 | if (!cf) | ||
| 395 | return; | ||
| 396 | |||
| 394 | if (unlikely(new_state == CAN_STATE_BUS_OFF)) { | 397 | if (unlikely(new_state == CAN_STATE_BUS_OFF)) { |
| 395 | cf->can_id |= CAN_ERR_BUSOFF; | 398 | cf->can_id |= CAN_ERR_BUSOFF; |
| 396 | return; | 399 | return; |
diff --git a/drivers/net/can/peak_canfd/peak_canfd.c b/drivers/net/can/peak_canfd/peak_canfd.c index 0d57be5ea97b..85268be0c913 100644 --- a/drivers/net/can/peak_canfd/peak_canfd.c +++ b/drivers/net/can/peak_canfd/peak_canfd.c | |||
| @@ -489,7 +489,7 @@ int peak_canfd_handle_msgs_list(struct peak_canfd_priv *priv, | |||
| 489 | struct pucan_rx_msg *msg_list, int msg_count) | 489 | struct pucan_rx_msg *msg_list, int msg_count) |
| 490 | { | 490 | { |
| 491 | void *msg_ptr = msg_list; | 491 | void *msg_ptr = msg_list; |
| 492 | int i, msg_size; | 492 | int i, msg_size = 0; |
| 493 | 493 | ||
| 494 | for (i = 0; i < msg_count; i++) { | 494 | for (i = 0; i < msg_count; i++) { |
| 495 | msg_size = peak_canfd_handle_msg(priv, msg_ptr); | 495 | msg_size = peak_canfd_handle_msg(priv, msg_ptr); |
diff --git a/drivers/net/can/slcan.c b/drivers/net/can/slcan.c index eb7173713bbc..6a6e896e52fa 100644 --- a/drivers/net/can/slcan.c +++ b/drivers/net/can/slcan.c | |||
| @@ -417,7 +417,7 @@ static int slc_open(struct net_device *dev) | |||
| 417 | static void slc_free_netdev(struct net_device *dev) | 417 | static void slc_free_netdev(struct net_device *dev) |
| 418 | { | 418 | { |
| 419 | int i = dev->base_addr; | 419 | int i = dev->base_addr; |
| 420 | free_netdev(dev); | 420 | |
| 421 | slcan_devs[i] = NULL; | 421 | slcan_devs[i] = NULL; |
| 422 | } | 422 | } |
| 423 | 423 | ||
| @@ -436,7 +436,8 @@ static const struct net_device_ops slc_netdev_ops = { | |||
| 436 | static void slc_setup(struct net_device *dev) | 436 | static void slc_setup(struct net_device *dev) |
| 437 | { | 437 | { |
| 438 | dev->netdev_ops = &slc_netdev_ops; | 438 | dev->netdev_ops = &slc_netdev_ops; |
| 439 | dev->destructor = slc_free_netdev; | 439 | dev->needs_free_netdev = true; |
| 440 | dev->priv_destructor = slc_free_netdev; | ||
| 440 | 441 | ||
| 441 | dev->hard_header_len = 0; | 442 | dev->hard_header_len = 0; |
| 442 | dev->addr_len = 0; | 443 | dev->addr_len = 0; |
| @@ -761,8 +762,6 @@ static void __exit slcan_exit(void) | |||
| 761 | if (sl->tty) { | 762 | if (sl->tty) { |
| 762 | printk(KERN_ERR "%s: tty discipline still running\n", | 763 | printk(KERN_ERR "%s: tty discipline still running\n", |
| 763 | dev->name); | 764 | dev->name); |
| 764 | /* Intentionally leak the control block. */ | ||
| 765 | dev->destructor = NULL; | ||
| 766 | } | 765 | } |
| 767 | 766 | ||
| 768 | unregister_netdev(dev); | 767 | unregister_netdev(dev); |
diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c index eecee7f8dfb7..afcc1312dbaf 100644 --- a/drivers/net/can/usb/gs_usb.c +++ b/drivers/net/can/usb/gs_usb.c | |||
| @@ -265,6 +265,8 @@ static int gs_cmd_reset(struct gs_usb *gsusb, struct gs_can *gsdev) | |||
| 265 | sizeof(*dm), | 265 | sizeof(*dm), |
| 266 | 1000); | 266 | 1000); |
| 267 | 267 | ||
| 268 | kfree(dm); | ||
| 269 | |||
| 268 | return rc; | 270 | return rc; |
| 269 | } | 271 | } |
| 270 | 272 | ||
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 57913dbbae0a..1ca76e03e965 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c | |||
| @@ -908,8 +908,6 @@ static int peak_usb_probe(struct usb_interface *intf, | |||
| 908 | const struct peak_usb_adapter *peak_usb_adapter = NULL; | 908 | const struct peak_usb_adapter *peak_usb_adapter = NULL; |
| 909 | int i, err = -ENOMEM; | 909 | int i, err = -ENOMEM; |
| 910 | 910 | ||
| 911 | usb_dev = interface_to_usbdev(intf); | ||
| 912 | |||
| 913 | /* get corresponding PCAN-USB adapter */ | 911 | /* get corresponding PCAN-USB adapter */ |
| 914 | for (i = 0; i < ARRAY_SIZE(peak_usb_adapters_list); i++) | 912 | for (i = 0; i < ARRAY_SIZE(peak_usb_adapters_list); i++) |
| 915 | if (peak_usb_adapters_list[i]->device_id == usb_id_product) { | 913 | if (peak_usb_adapters_list[i]->device_id == usb_id_product) { |
| @@ -920,7 +918,7 @@ static int peak_usb_probe(struct usb_interface *intf, | |||
| 920 | if (!peak_usb_adapter) { | 918 | if (!peak_usb_adapter) { |
| 921 | /* should never come except device_id bad usage in this file */ | 919 | /* should never come except device_id bad usage in this file */ |
| 922 | pr_err("%s: didn't find device id. 0x%x in devices list\n", | 920 | pr_err("%s: didn't find device id. 0x%x in devices list\n", |
| 923 | PCAN_USB_DRIVER_NAME, usb_dev->descriptor.idProduct); | 921 | PCAN_USB_DRIVER_NAME, usb_id_product); |
| 924 | return -ENODEV; | 922 | return -ENODEV; |
| 925 | } | 923 | } |
| 926 | 924 | ||
diff --git a/drivers/net/can/vcan.c b/drivers/net/can/vcan.c index facca33d53e9..a8cb33264ff1 100644 --- a/drivers/net/can/vcan.c +++ b/drivers/net/can/vcan.c | |||
| @@ -152,7 +152,7 @@ static const struct net_device_ops vcan_netdev_ops = { | |||
| 152 | static void vcan_setup(struct net_device *dev) | 152 | static void vcan_setup(struct net_device *dev) |
| 153 | { | 153 | { |
| 154 | dev->type = ARPHRD_CAN; | 154 | dev->type = ARPHRD_CAN; |
| 155 | dev->mtu = CAN_MTU; | 155 | dev->mtu = CANFD_MTU; |
| 156 | dev->hard_header_len = 0; | 156 | dev->hard_header_len = 0; |
| 157 | dev->addr_len = 0; | 157 | dev->addr_len = 0; |
| 158 | dev->tx_queue_len = 0; | 158 | dev->tx_queue_len = 0; |
| @@ -163,7 +163,7 @@ static void vcan_setup(struct net_device *dev) | |||
| 163 | dev->flags |= IFF_ECHO; | 163 | dev->flags |= IFF_ECHO; |
| 164 | 164 | ||
| 165 | dev->netdev_ops = &vcan_netdev_ops; | 165 | dev->netdev_ops = &vcan_netdev_ops; |
| 166 | dev->destructor = free_netdev; | 166 | dev->needs_free_netdev = true; |
| 167 | } | 167 | } |
| 168 | 168 | ||
| 169 | static struct rtnl_link_ops vcan_link_ops __read_mostly = { | 169 | static struct rtnl_link_ops vcan_link_ops __read_mostly = { |
diff --git a/drivers/net/can/vxcan.c b/drivers/net/can/vxcan.c index 7fbb24795681..cfe889e8f172 100644 --- a/drivers/net/can/vxcan.c +++ b/drivers/net/can/vxcan.c | |||
| @@ -150,13 +150,13 @@ static const struct net_device_ops vxcan_netdev_ops = { | |||
| 150 | static void vxcan_setup(struct net_device *dev) | 150 | static void vxcan_setup(struct net_device *dev) |
| 151 | { | 151 | { |
| 152 | dev->type = ARPHRD_CAN; | 152 | dev->type = ARPHRD_CAN; |
| 153 | dev->mtu = CAN_MTU; | 153 | dev->mtu = CANFD_MTU; |
| 154 | dev->hard_header_len = 0; | 154 | dev->hard_header_len = 0; |
| 155 | dev->addr_len = 0; | 155 | dev->addr_len = 0; |
| 156 | dev->tx_queue_len = 0; | 156 | dev->tx_queue_len = 0; |
| 157 | dev->flags = (IFF_NOARP|IFF_ECHO); | 157 | dev->flags = (IFF_NOARP|IFF_ECHO); |
| 158 | dev->netdev_ops = &vxcan_netdev_ops; | 158 | dev->netdev_ops = &vxcan_netdev_ops; |
| 159 | dev->destructor = free_netdev; | 159 | dev->needs_free_netdev = true; |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | /* forward declaration for rtnl_create_link() */ | 162 | /* forward declaration for rtnl_create_link() */ |
