diff options
Diffstat (limited to 'lib/kobject.c')
| -rw-r--r-- | lib/kobject.c | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/kobject.c b/lib/kobject.c index e07ee1fcd6f..a65486613d7 100644 --- a/lib/kobject.c +++ b/lib/kobject.c @@ -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;  		}  	}  |