wifi: wl3501_cs: Fix an error handling path in wl3501_probe()

[ Upstream commit 391af06a02 ]

Should wl3501_config() fail, some resources need to be released as already
done in the remove function.

Fixes: 15b99ac172 ("[PATCH] pcmcia: add return value to _config() functions")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/7cc9c9316489b7d69b36aeb0edd3123538500b41.1684569865.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Christophe JAILLET 2023-05-20 10:05:08 +02:00 committed by Greg Kroah-Hartman
parent 4448ad27b9
commit cb9f889353

View file

@ -1863,6 +1863,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;
@ -1874,8 +1875,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;
@ -1888,9 +1888,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)