X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=lib%2Fkobject.c;h=a65486613d79775bf87918b390d8edd608d55cef;hb=f51005d7a46d57cd07009816f7a9eabef11cc4c6;hp=e07ee1fcd6f19da086439ffbeacd8376e4b3e533;hpb=8874e812feb4926f4a51a82c4fca75c7daa05fc5;p=karo-tx-linux.git diff --git a/lib/kobject.c b/lib/kobject.c index e07ee1fcd6f1..a65486613d79 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; } }