diff --git a/[refs] b/[refs] index 223f4a49d306..46a6264597ee 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d76e15fb20eeb7632ef38876a884fe3508b2c01d +refs/heads/master: cfb36fff45e3997b8044c81045fc4869ba5f281a diff --git a/trunk/lib/kobject.c b/trunk/lib/kobject.c index 7919c32a3a15..4d52b6f534bc 100644 --- a/trunk/lib/kobject.c +++ b/trunk/lib/kobject.c @@ -133,7 +133,6 @@ void kobject_init(struct kobject * kobj) return; kref_init(&kobj->kref); INIT_LIST_HEAD(&kobj->entry); - kobj->kset = kset_get(kobj->kset); } @@ -184,7 +183,7 @@ int kobject_add(struct kobject * kobj) kobj->kset ? kobject_name(&kobj->kset->kobj) : "" ); if (kobj->kset) { - spin_lock(&kobj->kset->list_lock); + kobj->kset = kset_get(kobj->kset); if (!parent) { parent = kobject_get(&kobj->kset->kobj); @@ -196,7 +195,8 @@ int kobject_add(struct kobject * kobj) kobject_get(parent); } - list_add_tail(&kobj->entry,&kobj->kset->list); + spin_lock(&kobj->kset->list_lock); + list_add_tail(&kobj->entry, &kobj->kset->list); spin_unlock(&kobj->kset->list_lock); kobj->parent = parent; }