Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1fe539a authored by Cornelia Huck's avatar Cornelia Huck Committed by Greg Kroah-Hartman
Browse files

Driver core: Fix cleanup when failing device_add().



Driver core: Fix cleanup when failing device_add().

 - Don't call cleanup_device_parent() if we didn't call setup_parent().
 - dev->kobj.parent may be NULL when cleanup_device_parent() is called,
   so we need to handle glue_dir == NULL in cleanup_glue_dir().

Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 135dee0c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -621,7 +621,8 @@ static struct kobject *get_device_parent(struct device *dev,
static void cleanup_glue_dir(struct device *dev, struct kobject *glue_dir)
{
	/* see if we live in a "glue" directory */
	if (!dev->class || glue_dir->kset != &dev->class->class_dirs)
	if (!glue_dir || !dev->class ||
	    glue_dir->kset != &dev->class->class_dirs)
		return;

	kobject_put(glue_dir);
@@ -773,7 +774,7 @@ int device_add(struct device *dev)
	dev = get_device(dev);
	if (!dev || !strlen(dev->bus_id)) {
		error = -EINVAL;
		goto Error;
		goto Done;
	}

	pr_debug("device: '%s': %s\n", dev->bus_id, __FUNCTION__);