[12/13] nvmem: core: Fix device reference leak

Message ID 20190128155506.25566-13-srinivas.kandagatla@linaro.org
State New
Headers show
  • nvmem: patches for 5.1
Related show

Commit Message

Srinivas Kandagatla Jan. 28, 2019, 3:55 p.m.
From: Alban Bedel <albeu@free.fr>

__nvmem_device_get() make use of bus_find_device() to get the relevant
device and this function increase the reference count of the device
found, however this is not accounted for anywhere. Fix
__nvmem_device_get() and __nvmem_device_put() to properly release this
reference count.

Signed-off-by: Alban Bedel <albeu@free.fr>

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

 drivers/nvmem/core.c | 2 ++
 1 file changed, 2 insertions(+)



diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 1752768dd2d2..5400017ef616 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -811,6 +811,7 @@  static struct nvmem_device *__nvmem_device_get(struct device_node *np,
 			"could not increase module refcount for cell %s\n",
+		put_device(&nvmem->dev);
 		return ERR_PTR(-EINVAL);
@@ -821,6 +822,7 @@  static struct nvmem_device *__nvmem_device_get(struct device_node *np,
 static void __nvmem_device_put(struct nvmem_device *nvmem)
+	put_device(&nvmem->dev);
 	kref_put(&nvmem->refcnt, nvmem_device_release);