From: Uwe Kleine-König Date: Fri, 5 Feb 2021 22:28:40 +0000 (+0100) Subject: device-dax: Fix error path in dax_driver_register X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=e307bf11c5198dbc0c9de0694c3e85c681648df6;p=linux.git device-dax: Fix error path in dax_driver_register 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 Link: https://lore.kernel.org/r/20210205222842.34896-4-uwe@kleine-koenig.org Signed-off-by: Dan Williams --- diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c index ef53da441c5d4..d2419e88073ac 100644 --- a/drivers/dax/bus.c +++ b/drivers/dax/bus.c @@ -1420,7 +1420,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);