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,  	can_update_state_error_stats(dev, new_state);  	priv->state = new_state; +	if (!cf) +		return; +  	if (unlikely(new_state == CAN_STATE_BUS_OFF)) {  		cf->can_id |= CAN_ERR_BUSOFF;  		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,  				struct pucan_rx_msg *msg_list, int msg_count)  {  	void *msg_ptr = msg_list; -	int i, msg_size; +	int i, msg_size = 0;  	for (i = 0; i < msg_count; i++) {  		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)  static void slc_free_netdev(struct net_device *dev)  {  	int i = dev->base_addr; -	free_netdev(dev); +  	slcan_devs[i] = NULL;  } @@ -436,7 +436,8 @@ static const struct net_device_ops slc_netdev_ops = {  static void slc_setup(struct net_device *dev)  {  	dev->netdev_ops		= &slc_netdev_ops; -	dev->destructor		= slc_free_netdev; +	dev->needs_free_netdev	= true; +	dev->priv_destructor	= slc_free_netdev;  	dev->hard_header_len	= 0;  	dev->addr_len		= 0; @@ -761,8 +762,6 @@ static void __exit slcan_exit(void)  		if (sl->tty) {  			printk(KERN_ERR "%s: tty discipline still running\n",  			       dev->name); -			/* Intentionally leak the control block. */ -			dev->destructor = NULL;  		}  		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)  			     sizeof(*dm),  			     1000); +	kfree(dm); +  	return rc;  } 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,  	const struct peak_usb_adapter *peak_usb_adapter = NULL;  	int i, err = -ENOMEM; -	usb_dev = interface_to_usbdev(intf); -  	/* get corresponding PCAN-USB adapter */  	for (i = 0; i < ARRAY_SIZE(peak_usb_adapters_list); i++)  		if (peak_usb_adapters_list[i]->device_id == usb_id_product) { @@ -920,7 +918,7 @@ static int peak_usb_probe(struct usb_interface *intf,  	if (!peak_usb_adapter) {  		/* should never come except device_id bad usage in this file */  		pr_err("%s: didn't find device id. 0x%x in devices list\n", -			PCAN_USB_DRIVER_NAME, usb_dev->descriptor.idProduct); +			PCAN_USB_DRIVER_NAME, usb_id_product);  		return -ENODEV;  	} 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 = {  static void vcan_setup(struct net_device *dev)  {  	dev->type		= ARPHRD_CAN; -	dev->mtu		= CAN_MTU; +	dev->mtu		= CANFD_MTU;  	dev->hard_header_len	= 0;  	dev->addr_len		= 0;  	dev->tx_queue_len	= 0; @@ -163,7 +163,7 @@ static void vcan_setup(struct net_device *dev)  		dev->flags |= IFF_ECHO;  	dev->netdev_ops		= &vcan_netdev_ops; -	dev->destructor		= free_netdev; +	dev->needs_free_netdev	= true;  }  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 = {  static void vxcan_setup(struct net_device *dev)  {  	dev->type		= ARPHRD_CAN; -	dev->mtu		= CAN_MTU; +	dev->mtu		= CANFD_MTU;  	dev->hard_header_len	= 0;  	dev->addr_len		= 0;  	dev->tx_queue_len	= 0;  	dev->flags		= (IFF_NOARP|IFF_ECHO);  	dev->netdev_ops		= &vxcan_netdev_ops; -	dev->destructor		= free_netdev; +	dev->needs_free_netdev	= true;  }  /* forward declaration for rtnl_create_link() */ | 
