Messages in this thread Patch in this message | | | From | David Herrmann <> | Subject | [PATCH] driver core: fix device_create() error path | Date | Thu, 21 Nov 2013 20:15:48 +0100 |
| |
We call put_device() in the error path, which is fine for dev==NULL. However, in case kobject_set_name_vargs() fails, we have dev!=NULL but device_initialized() wasn't called, yet.
Fix this by splitting device_register() into explicit calls to device_add() and an early call to device_initialize().
Signed-off-by: David Herrmann <dh.herrmann@gmail.com> --- drivers/base/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/base/core.c b/drivers/base/core.c index 34abf4d..4be8911 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -1676,6 +1676,7 @@ device_create_groups_vargs(struct class *class, struct device *parent, goto error; } + device_initialize(dev); dev->devt = devt; dev->class = class; dev->parent = parent; @@ -1687,7 +1688,7 @@ device_create_groups_vargs(struct class *class, struct device *parent, if (retval) goto error; - retval = device_register(dev); + retval = device_add(dev); if (retval) goto error; -- 1.8.4.2
| |