diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/base/core.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c index 992eba3289bd..7762ee86697d 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
@@ -571,6 +571,8 @@ static struct kobject *virtual_device_parent(struct device *dev) | |||
571 | static struct kobject * get_device_parent(struct device *dev, | 571 | static struct kobject * get_device_parent(struct device *dev, |
572 | struct device *parent) | 572 | struct device *parent) |
573 | { | 573 | { |
574 | int retval; | ||
575 | |||
574 | if (dev->class) { | 576 | if (dev->class) { |
575 | struct kobject *kobj = NULL; | 577 | struct kobject *kobj = NULL; |
576 | struct kobject *parent_kobj; | 578 | struct kobject *parent_kobj; |
@@ -600,8 +602,18 @@ static struct kobject * get_device_parent(struct device *dev, | |||
600 | return kobj; | 602 | return kobj; |
601 | 603 | ||
602 | /* or create a new class-directory at the parent device */ | 604 | /* or create a new class-directory at the parent device */ |
603 | return kobject_kset_add_dir(&dev->class->class_dirs, | 605 | k = kobject_create(); |
604 | parent_kobj, dev->class->name); | 606 | if (!k) |
607 | return NULL; | ||
608 | k->kset = &dev->class->class_dirs; | ||
609 | retval = kobject_add_ng(k, parent_kobj, "%s", dev->class->name); | ||
610 | if (retval < 0) { | ||
611 | kobject_put(k); | ||
612 | return NULL; | ||
613 | } | ||
614 | /* Do not emit a uevent, as it's not needed for this | ||
615 | * "class glue" directory. */ | ||
616 | return k; | ||
605 | } | 617 | } |
606 | 618 | ||
607 | if (parent) | 619 | if (parent) |