Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f4321980 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Greg Kroah-Hartman
Browse files

wifi: ray_cs: Fix an error handling path in ray_probe()



[ Upstream commit 4f8d66a9fb2edcd05c1e563456a55a08910bfb37 ]

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

While at it, remove a useless and erroneous comment. The probe is
ray_probe(), not ray_attach().

Fixes: 15b99ac1 ("[PATCH] pcmcia: add return value to _config() functions")
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/8c544d18084f8b37dd108e844f7e79e85ff708ff.1684570373.git.christophe.jaillet@wanadoo.fr


Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 8fe51dce
Loading
Loading
Loading
Loading
+11 −5
Original line number Original line Diff line number Diff line
@@ -270,13 +270,14 @@ static int ray_probe(struct pcmcia_device *p_dev)
{
{
	ray_dev_t *local;
	ray_dev_t *local;
	struct net_device *dev;
	struct net_device *dev;
	int ret;


	dev_dbg(&p_dev->dev, "ray_attach()\n");
	dev_dbg(&p_dev->dev, "ray_attach()\n");


	/* Allocate space for private device-specific data */
	/* Allocate space for private device-specific data */
	dev = alloc_etherdev(sizeof(ray_dev_t));
	dev = alloc_etherdev(sizeof(ray_dev_t));
	if (!dev)
	if (!dev)
		goto fail_alloc_dev;
		return -ENOMEM;


	local = netdev_priv(dev);
	local = netdev_priv(dev);
	local->finder = p_dev;
	local->finder = p_dev;
@@ -313,11 +314,16 @@ static int ray_probe(struct pcmcia_device *p_dev)
	timer_setup(&local->timer, NULL, 0);
	timer_setup(&local->timer, NULL, 0);


	this_device = p_dev;
	this_device = p_dev;
	return ray_config(p_dev);
	ret = ray_config(p_dev);
	if (ret)
		goto err_free_dev;


fail_alloc_dev:
	return 0;
	return -ENOMEM;

} /* ray_attach */
err_free_dev:
	free_netdev(dev);
	return ret;
}


static void ray_detach(struct pcmcia_device *link)
static void ray_detach(struct pcmcia_device *link)
{
{