Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1369590
| From | Alexey Khoroshilov <khoroshilov@ispras.ru> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH] mei: do not pin module if cldrv->probe() failed |
| Date | 2016-04-01 23:00 +0200 |
| Message-ID | <rjekG-1kN-7@gated-at.bofh.it> (permalink) |
| Organization | linux.* mail to news gateway |
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: Alexey Khoroshilov <khoroshilov@ispras.ru> --- drivers/misc/mei/bus.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/misc/mei/bus.c b/drivers/misc/mei/bus.c index 5d5996e39a67..6c32a47c8f30 100644 --- a/drivers/misc/mei/bus.c +++ b/drivers/misc/mei/bus.c @@ -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; } /** -- 1.9.1
Back to linux.kernel | Previous | Next | Find similar | Unroll thread
[PATCH] mei: do not pin module if cldrv->probe() failed Alexey Khoroshilov <khoroshilov@ispras.ru> - 2016-04-01 23:00 +0200
csiph-web