diff options
Diffstat (limited to 'drivers/net/wireless/legacy/wl3501_cs.c')
| -rw-r--r-- | drivers/net/wireless/legacy/wl3501_cs.c | 16 | 
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/net/wireless/legacy/wl3501_cs.c b/drivers/net/wireless/legacy/wl3501_cs.c index 7fb2f9513476..c45c4b7cbbaf 100644 --- a/drivers/net/wireless/legacy/wl3501_cs.c +++ b/drivers/net/wireless/legacy/wl3501_cs.c @@ -1862,6 +1862,7 @@ static int wl3501_probe(struct pcmcia_device *p_dev)  {  	struct net_device *dev;  	struct wl3501_card *this; +	int ret;  	/* The io structure describes IO port mapping */  	p_dev->resource[0]->end	= 16; @@ -1873,8 +1874,7 @@ static int wl3501_probe(struct pcmcia_device *p_dev)  	dev = alloc_etherdev(sizeof(struct wl3501_card));  	if (!dev) -		goto out_link; - +		return -ENOMEM;  	dev->netdev_ops		= &wl3501_netdev_ops;  	dev->watchdog_timeo	= 5 * HZ; @@ -1887,9 +1887,15 @@ static int wl3501_probe(struct pcmcia_device *p_dev)  	netif_stop_queue(dev);  	p_dev->priv = dev; -	return wl3501_config(p_dev); -out_link: -	return -ENOMEM; +	ret = wl3501_config(p_dev); +	if (ret) +		goto out_free_etherdev; + +	return 0; + +out_free_etherdev: +	free_netdev(dev); +	return ret;  }  static int wl3501_config(struct pcmcia_device *link)  |