diff options
Diffstat (limited to 'lib/kobject.c')
-rw-r--r-- | lib/kobject.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/kobject.c b/lib/kobject.c index 0487d1f64806..b512b746d2af 100644 --- a/lib/kobject.c +++ b/lib/kobject.c | |||
@@ -212,12 +212,15 @@ static int kobject_add_internal(struct kobject *kobj) | |||
212 | * @fmt: format string used to build the name | 212 | * @fmt: format string used to build the name |
213 | * @vargs: vargs to format the string. | 213 | * @vargs: vargs to format the string. |
214 | */ | 214 | */ |
215 | static int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, | 215 | int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, |
216 | va_list vargs) | 216 | va_list vargs) |
217 | { | 217 | { |
218 | const char *old_name = kobj->name; | 218 | const char *old_name = kobj->name; |
219 | char *s; | 219 | char *s; |
220 | 220 | ||
221 | if (kobj->name && !fmt) | ||
222 | return 0; | ||
223 | |||
221 | kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs); | 224 | kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs); |
222 | if (!kobj->name) | 225 | if (!kobj->name) |
223 | return -ENOMEM; | 226 | return -ENOMEM; |
@@ -790,11 +793,16 @@ static struct kset *kset_create(const char *name, | |||
790 | struct kobject *parent_kobj) | 793 | struct kobject *parent_kobj) |
791 | { | 794 | { |
792 | struct kset *kset; | 795 | struct kset *kset; |
796 | int retval; | ||
793 | 797 | ||
794 | kset = kzalloc(sizeof(*kset), GFP_KERNEL); | 798 | kset = kzalloc(sizeof(*kset), GFP_KERNEL); |
795 | if (!kset) | 799 | if (!kset) |
796 | return NULL; | 800 | return NULL; |
797 | kobject_set_name(&kset->kobj, name); | 801 | retval = kobject_set_name(&kset->kobj, name); |
802 | if (retval) { | ||
803 | kfree(kset); | ||
804 | return NULL; | ||
805 | } | ||
798 | kset->uevent_ops = uevent_ops; | 806 | kset->uevent_ops = uevent_ops; |
799 | kset->kobj.parent = parent_kobj; | 807 | kset->kobj.parent = parent_kobj; |
800 | 808 | ||