Commit 73e9dc4d authored by Alban Bedel's avatar Alban Bedel Committed by Greg Kroah-Hartman
Browse files

nvmem: core: Fix device reference leak



__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: default avatarAlban Bedel <albeu@free.fr>
Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 95b65195
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -811,6 +811,7 @@ static struct nvmem_device *__nvmem_device_get(struct device_node *np,
			"could not increase module refcount for cell %s\n",
			nvmem_dev_name(nvmem));

		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);
	module_put(nvmem->owner);
	kref_put(&nvmem->refcnt, nvmem_device_release);
}