aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kobject.c')
-rw-r--r--lib/kobject.c12
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 */
215static int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, 215int 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