From 3571123cdb9eaf92f318c758dcd7a77480503384 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 13 Apr 2013 15:15:30 -0700 Subject: [PATCH] --- yaml --- r: 362501 b: refs/heads/master c: a49b7e82cab0f9b41f483359be83f44fbb6b4979 h: refs/heads/master i: 362499: b398082cfee9157fb21fd0f18b3d41ab4f6771cf v: v3 --- [refs] | 2 +- trunk/lib/kobject.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 19dd474cbfff..13d16dfc1df5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1de14c3c5cbc9bb17e9dcc648cda51c0c85d54b9 +refs/heads/master: a49b7e82cab0f9b41f483359be83f44fbb6b4979 diff --git a/trunk/lib/kobject.c b/trunk/lib/kobject.c index e07ee1fcd6f1..a65486613d79 100644 --- a/trunk/lib/kobject.c +++ b/trunk/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; } }