diff options
author | Cornelia Huck <cornelia.huck@de.ibm.com> | 2006-11-27 10:35:05 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-02-07 10:37:12 -0800 |
commit | cb360bbf6352712310a7528137919c626a782744 (patch) | |
tree | c1dc84eb9b026c61256914e26624a5879c0f9951 /drivers/base/core.c | |
parent | 270a6c4cad809e92d7b81adde92d0b3d94eeb8ee (diff) |
driver core fixes: make_class_name() retval checks
Make make_class_name() return NULL on error and fixup callers in the
driver core.
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/base/core.c')
-rw-r--r-- | drivers/base/core.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c index c60114dbe5f5..6fee3e6b1ac2 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -527,9 +527,13 @@ int device_add(struct device *dev) &dev->kobj, dev->bus_id); #ifdef CONFIG_SYSFS_DEPRECATED if (parent) { - sysfs_create_link(&dev->kobj, &dev->parent->kobj, "device"); - class_name = make_class_name(dev->class->name, &dev->kobj); - sysfs_create_link(&dev->parent->kobj, &dev->kobj, class_name); + sysfs_create_link(&dev->kobj, &dev->parent->kobj, + "device"); + class_name = make_class_name(dev->class->name, + &dev->kobj); + if (class_name) + sysfs_create_link(&dev->parent->kobj, + &dev->kobj, class_name); } #endif } @@ -672,7 +676,9 @@ void device_del(struct device * dev) if (parent) { char *class_name = make_class_name(dev->class->name, &dev->kobj); - sysfs_remove_link(&dev->parent->kobj, class_name); + if (class_name) + sysfs_remove_link(&dev->parent->kobj, + class_name); kfree(class_name); sysfs_remove_link(&dev->kobj, "device"); } @@ -975,8 +981,7 @@ static int device_move_class_links(struct device *dev, class_name = make_class_name(dev->class->name, &dev->kobj); if (!class_name) { - error = PTR_ERR(class_name); - class_name = NULL; + error = -ENOMEM; goto out; } if (old_parent) { |