Skip to contentSkip to conversation

Patch "nvmem: core: fix leaks on registration errors" has been added to the 4.11-stable tree

PATCH [email protected] 1 participant 1 message Jul 18, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

nvmem: core: fix leaks on registration errors

to the 4.11-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
nvmem-core-fix-leaks-on-registration-errors.patch
and it can be found in the queue-4.11 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 3360acdf839170b612f5b212539694c20e3f16d0 Mon Sep 17 00:00:00 2001

From: Johan Hovold <[email protected]>
Date: Fri, 9 Jun 2017 10:59:07 +0100
Subject: nvmem: core: fix leaks on registration errors

From: Johan Hovold <[email protected]>

commit 3360acdf839170b612f5b212539694c20e3f16d0 upstream.

Make sure to deregister and release the nvmem device and underlying memory on registration errors.

Note that the private data must be freed using put_device() once the struct device has been initialised.

Also note that there's a related reference leak in the deregistration function as reported by Mika Westerberg which is being fixed separately.

Fixes b6c217ab9be6 ("nvmem: Add backwards compatibility support for older EEPROM drivers.")
Fixes eace75cfdcf7 ("nvmem: Add a simple NVMEM framework for nvmem providers")
Cc Andrew Lunn <[email protected]>
Cc Srinivas Kandagatla <[email protected]>
Cc Mika Westerberg <[email protected]>
---
 drivers/nvmem/core.c |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)
drivers/nvmem/core.c +8 -5
@@ -488,21 +488,24 @@ struct nvmem_device *nvmem_register(cons
 
 	rval = device_add(&nvmem->dev);
 	if (rval)
-		goto out;
+		goto err_put_device;
 
 	if (config->compat) {
 		rval = nvmem_setup_compat(nvmem, config);
 		if (rval)
-			goto out;
+			goto err_device_del;
 	}
 
 	if (config->cells)
 		nvmem_add_cells(nvmem, config);
 
 	return nvmem;
-out:
-	ida_simple_remove(&nvmem_ida, nvmem->id);
-	kfree(nvmem);
+
+err_device_del:
+	device_del(&nvmem->dev);
+err_put_device:
+	put_device(&nvmem->dev);
+
 	return ERR_PTR(rval);
 }
 EXPORT_SYMBOL_GPL(nvmem_register);

Patches currently in stable-queue which might be from [email protected] are

queue-4.11/nvmem-core-fix-leaks-on-registration-errors.patch