diff options
Diffstat (limited to 'drivers/net/wireless/microchip/wilc1000/netdev.c')
| -rw-r--r-- | drivers/net/wireless/microchip/wilc1000/netdev.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/wireless/microchip/wilc1000/netdev.c b/drivers/net/wireless/microchip/wilc1000/netdev.c index 9b319a455b96..e9f59de31b0b 100644 --- a/drivers/net/wireless/microchip/wilc1000/netdev.c +++ b/drivers/net/wireless/microchip/wilc1000/netdev.c @@ -730,6 +730,7 @@ netdev_tx_t wilc_mac_xmit(struct sk_buff *skb, struct net_device *ndev)  	if (skb->dev != ndev) {  		netdev_err(ndev, "Packet not destined to this device\n"); +		dev_kfree_skb(skb);  		return NETDEV_TX_OK;  	} @@ -980,7 +981,7 @@ struct wilc_vif *wilc_netdev_ifc_init(struct wilc *wl, const char *name,  						    ndev->name);  	if (!wl->hif_workqueue) {  		ret = -ENOMEM; -		goto error; +		goto unregister_netdev;  	}  	ndev->needs_free_netdev = true; @@ -995,6 +996,11 @@ struct wilc_vif *wilc_netdev_ifc_init(struct wilc *wl, const char *name,  	return vif; +unregister_netdev: +	if (rtnl_locked) +		cfg80211_unregister_netdevice(ndev); +	else +		unregister_netdev(ndev);    error:  	free_netdev(ndev);  	return ERR_PTR(ret);  |