diff options
Diffstat (limited to 'drivers/net/can/slcan.c')
| -rw-r--r-- | drivers/net/can/slcan.c | 7 | 
1 files changed, 3 insertions, 4 deletions
| 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); |