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

Reply via email to