diff options
Diffstat (limited to 'drivers/base/core.c')
-rw-r--r-- | drivers/base/core.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c index e73c92d13a23..4aa527b8a913 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
@@ -891,7 +891,8 @@ int device_add(struct device *dev) | |||
891 | set_dev_node(dev, dev_to_node(parent)); | 891 | set_dev_node(dev, dev_to_node(parent)); |
892 | 892 | ||
893 | /* first, register with generic layer. */ | 893 | /* first, register with generic layer. */ |
894 | error = kobject_add(&dev->kobj, dev->kobj.parent, "%s", dev_name(dev)); | 894 | /* we require the name to be set before, and pass NULL */ |
895 | error = kobject_add(&dev->kobj, dev->kobj.parent, NULL); | ||
895 | if (error) | 896 | if (error) |
896 | goto Error; | 897 | goto Error; |
897 | 898 | ||
@@ -1142,6 +1143,9 @@ int device_for_each_child(struct device *parent, void *data, | |||
1142 | struct device *child; | 1143 | struct device *child; |
1143 | int error = 0; | 1144 | int error = 0; |
1144 | 1145 | ||
1146 | if (!parent->p) | ||
1147 | return 0; | ||
1148 | |||
1145 | klist_iter_init(&parent->p->klist_children, &i); | 1149 | klist_iter_init(&parent->p->klist_children, &i); |
1146 | while ((child = next_device(&i)) && !error) | 1150 | while ((child = next_device(&i)) && !error) |
1147 | error = fn(child, data); | 1151 | error = fn(child, data); |