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

Commit b9c79543 authored by Alexey Khoroshilov's avatar Alexey Khoroshilov Committed by Greg Kroah-Hartman
Browse files

mei: do not pin module if cldrv->probe() failed



If cldrv->probe() failed in mei_cl_device_probe(),
the mei module is left pinned.

The patch moves __module_get(THIS_MODULE) after cldrv->probe().

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent bd83a4ab
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -580,6 +580,7 @@ static int mei_cl_device_probe(struct device *dev)
	struct mei_cl_device *cldev;
	struct mei_cl_driver *cldrv;
	const struct mei_cl_device_id *id;
	int ret;

	cldev = to_mei_cl_device(dev);
	cldrv = to_mei_cl_driver(dev->driver);
@@ -594,9 +595,12 @@ static int mei_cl_device_probe(struct device *dev)
	if (!id)
		return -ENODEV;

	__module_get(THIS_MODULE);
	ret = cldrv->probe(cldev, id);
	if (ret)
		return ret;

	return cldrv->probe(cldev, id);
	__module_get(THIS_MODULE);
	return 0;
}

/**