aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/class.c
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-04-18 05:39:23 -0400
committerJeff Garzik <jeff@garzik.org>2006-04-18 05:39:23 -0400
commit9e73972cef1c0961c78b0e0b61c4ecc275b29f04 (patch)
tree27907bbd653504d71ff47cb00bdf8cd61e82f126 /drivers/base/class.c
parenta890b15c0990cc8d686edcc85f5fccde71ad5ce9 (diff)
parent4741c336d27dec3ea68a35659abb8dc82b142388 (diff)
Merge branch 'upstream'
Diffstat (limited to 'drivers/base/class.c')
-rw-r--r--drivers/base/class.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/base/class.c b/drivers/base/class.c
index df7fdabd0730..0e71dff327cd 100644
--- a/drivers/base/class.c
+++ b/drivers/base/class.c
@@ -562,14 +562,13 @@ int class_device_add(struct class_device *class_dev)
562 kobject_uevent(&class_dev->kobj, KOBJ_ADD); 562 kobject_uevent(&class_dev->kobj, KOBJ_ADD);
563 563
564 /* notify any interfaces this device is now here */ 564 /* notify any interfaces this device is now here */
565 if (parent_class) { 565 down(&parent_class->sem);
566 down(&parent_class->sem); 566 list_add_tail(&class_dev->node, &parent_class->children);
567 list_add_tail(&class_dev->node, &parent_class->children); 567 list_for_each_entry(class_intf, &parent_class->interfaces, node) {
568 list_for_each_entry(class_intf, &parent_class->interfaces, node) 568 if (class_intf->add)
569 if (class_intf->add) 569 class_intf->add(class_dev, class_intf);
570 class_intf->add(class_dev, class_intf);
571 up(&parent_class->sem);
572 } 570 }
571 up(&parent_class->sem);
573 572
574 register_done: 573 register_done:
575 if (error) { 574 if (error) {