Messages in this thread Patch in this message | | | From | Uwe Kleine-König <> | Subject | [PATCH 2/3] dax-device: Fix error path in dax_driver_register | Date | Thu, 28 Jan 2021 00:01:23 +0100 |
| |
The static variable match_always_count is supposed to track if there is a driver registered that has .match_always set. If driver_register() fails, the previous increment must be undone.
Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org> --- drivers/dax/bus.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c index 618d462975ba..498c60333d60 100644 --- a/drivers/dax/bus.c +++ b/drivers/dax/bus.c @@ -1417,7 +1417,15 @@ int __dax_driver_register(struct dax_device_driver *dax_drv, mutex_unlock(&dax_bus_lock); if (rc) return rc; - return driver_register(drv); + + rc = driver_register(drv); + if (rc && dax_drv->match_always) { + mutex_lock(&dax_bus_lock); + match_always_count -= dax_drv->match_always; + mutex_unlock(&dax_bus_lock); + } + + return rc; } EXPORT_SYMBOL_GPL(__dax_driver_register); -- 2.29.2
| |