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

Commit 1502edd4 authored by Yang Yingliang's avatar Yang Yingliang Committed by Greg Kroah-Hartman
Browse files

pcmcia: ds: fix refcount leak in pcmcia_device_add()



[ Upstream commit 402ab979b29126068e0b596b641422ff7490214c ]

As the comment of device_register() says, it should use put_device()
to give up the reference in the error path. Then, insofar resources
will be freed in pcmcia_release_dev(), the error path is no longer
needed. In particular, this means that the (previously missing) dropping
of the reference to &p_dev->function_config->ref is now handled by
pcmcia_release_dev().

Fixes: 360b65b9 ("[PATCH] pcmcia: make config_t independent, add reference counting")
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
[linux@dominikbrodowski.net: simplification, commit message rewrite]
Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 58d6fb6a
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -578,8 +578,14 @@ static struct pcmcia_device *pcmcia_device_add(struct pcmcia_socket *s,

	pcmcia_device_query(p_dev);

	if (device_register(&p_dev->dev))
		goto err_unreg;
	if (device_register(&p_dev->dev)) {
		mutex_lock(&s->ops_mutex);
		list_del(&p_dev->socket_device_list);
		s->device_count--;
		mutex_unlock(&s->ops_mutex);
		put_device(&p_dev->dev);
		return NULL;
	}

	return p_dev;