X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=lib%2Fkobject.c;h=b512b746d2aff464e1c18a01c53300ef7b6e68f4;hb=83d90addc829ab56ace49b10fd7d5d415448aac4;hp=0487d1f64806c645927fdc22ea4a5848f3d9ea5f;hpb=0b4a4fea253e1296222603ccc55430ed7cd9413a;p=safe%2Fjmp%2Flinux-2.6 diff --git a/lib/kobject.c b/lib/kobject.c index 0487d1f..b512b74 100644 --- a/lib/kobject.c +++ b/lib/kobject.c @@ -212,12 +212,15 @@ static int kobject_add_internal(struct kobject *kobj) * @fmt: format string used to build the name * @vargs: vargs to format the string. */ -static int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, +int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, va_list vargs) { const char *old_name = kobj->name; char *s; + if (kobj->name && !fmt) + return 0; + kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs); if (!kobj->name) return -ENOMEM; @@ -790,11 +793,16 @@ static struct kset *kset_create(const char *name, struct kobject *parent_kobj) { struct kset *kset; + int retval; kset = kzalloc(sizeof(*kset), GFP_KERNEL); if (!kset) return NULL; - kobject_set_name(&kset->kobj, name); + retval = kobject_set_name(&kset->kobj, name); + if (retval) { + kfree(kset); + return NULL; + } kset->uevent_ops = uevent_ops; kset->kobj.parent = parent_kobj;