diff options
Diffstat (limited to 'drivers/net/slip/slip.c')
| -rw-r--r-- | drivers/net/slip/slip.c | 9 | 
1 files changed, 4 insertions, 5 deletions
| diff --git a/drivers/net/slip/slip.c b/drivers/net/slip/slip.c index 1da31dc47f86..436dd78c396a 100644 --- a/drivers/net/slip/slip.c +++ b/drivers/net/slip/slip.c @@ -364,7 +364,7 @@ static void sl_bump(struct slip *sl)  		return;  	}  	skb->dev = dev; -	memcpy(skb_put(skb, count), sl->rbuff, count); +	skb_put_data(skb, sl->rbuff, count);  	skb_reset_mac_header(skb);  	skb->protocol = htons(ETH_P_IP);  	netif_rx_ni(skb); @@ -629,7 +629,7 @@ static void sl_uninit(struct net_device *dev)  static void sl_free_netdev(struct net_device *dev)  {  	int i = dev->base_addr; -	free_netdev(dev); +  	slip_devs[i] = NULL;  } @@ -651,7 +651,8 @@ static const struct net_device_ops sl_netdev_ops = {  static void sl_setup(struct net_device *dev)  {  	dev->netdev_ops		= &sl_netdev_ops; -	dev->destructor		= sl_free_netdev; +	dev->needs_free_netdev	= true; +	dev->priv_destructor	= sl_free_netdev;  	dev->hard_header_len	= 0;  	dev->addr_len		= 0; @@ -1369,8 +1370,6 @@ static void __exit slip_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); | 
