|
@@ -529,6 +529,13 @@ struct kobject *kobject_get(struct kobject *kobj)
|
|
|
return kobj;
|
|
|
}
|
|
|
|
|
|
+static struct kobject *kobject_get_unless_zero(struct kobject *kobj)
|
|
|
+{
|
|
|
+ if (!kref_get_unless_zero(&kobj->kref))
|
|
|
+ kobj = NULL;
|
|
|
+ return kobj;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* kobject_cleanup - free kobject resources.
|
|
|
* @kobj: object to cleanup
|
|
@@ -751,7 +758,7 @@ struct kobject *kset_find_obj(struct kset *kset, const char *name)
|
|
|
|
|
|
list_for_each_entry(k, &kset->list, entry) {
|
|
|
if (kobject_name(k) && !strcmp(kobject_name(k), name)) {
|
|
|
- ret = kobject_get(k);
|
|
|
+ ret = kobject_get_unless_zero(k);
|
|
|
break;
|
|
|
}
|
|
|
}
|