Clarify the documentation along the way.
Signed-off-by: Jens Taprogge <[email protected]>
---
drivers/ipack/ipack.c | 10 ++++++++--
include/linux/ipack.h | 5 ++++-
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/drivers/ipack/ipack.c b/drivers/ipack/ipack.c
index 008afad..6abd09c 100644
--- a/drivers/ipack/ipack.c
+++ b/drivers/ipack/ipack.c
@@ -433,8 +433,13 @@ int ipack_device_register(struct ipack_device *dev)
dev->dev.bus = &ipack_bus_type;
dev->dev.release = ipack_device_release;
dev->dev.parent = dev->bus->parent;
- dev_set_name(&dev->dev,
+ ret = dev_set_name(&dev->dev,
"ipack-dev.%u.%u", dev->bus->bus_nr, dev->slot);
+ if (ret < 0) {
+ dev_err(&dev->dev, "failed to set device name.\n");
+ ipack_device_relase(dev);
+ return ret;
+ }
if (dev->bus->ops->set_clockrate(dev, 8))
dev_warn(&dev->dev, "failed to switch to 8 MHz operation for
reading of device ID.\n");
@@ -444,6 +449,7 @@ int ipack_device_register(struct ipack_device *dev)
ret = ipack_device_read_id(dev);
if (ret < 0) {
dev_err(&dev->dev, "error reading device id section.\n");
+ ipack_device_relase(dev);
return ret;
}
@@ -456,7 +462,7 @@ int ipack_device_register(struct ipack_device *dev)
ret = device_register(&dev->dev);
if (ret < 0)
- kfree(dev->id);
+ ipack_put_device(dev);
return ret;
}
diff --git a/include/linux/ipack.h b/include/linux/ipack.h
index 9c10d6e..b76fc2e 100644
--- a/include/linux/ipack.h
+++ b/include/linux/ipack.h
@@ -214,7 +214,10 @@ void ipack_driver_unregister(struct ipack_driver *edrv);
* function. The rest of the fields will be allocated and populated
* during registration.
*
- * Return zero on success or error code on failure.
+ * Upon calling this function the responsibility to free @dev is passed to
+ * the subsystem (independently of the call's possible failure).
+ *
+ * @return zero on success or error code on failure.
*/
int ipack_device_register(struct ipack_device *dev);
void ipack_device_unregister(struct ipack_device *dev);
--
1.8.1.2
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Industrypack-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/industrypack-devel