diff options
author | Kay Sievers <kay.sievers@vrfy.org> | 2008-04-30 02:06:29 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-04-30 16:52:48 -0700 |
commit | a4ca6617421188f50774780cdc91c3782b7d08fe (patch) | |
tree | 661fbedcbd3deb8555b10a9406b7ffd50e288815 /lib | |
parent | 1cbfb7a5acd357de6c3f8e27e8d8f92b3867b1f3 (diff) | |
download | lwn-a4ca6617421188f50774780cdc91c3782b7d08fe.tar.gz lwn-a4ca6617421188f50774780cdc91c3782b7d08fe.zip |
kobject: do not copy vargs, just pass them around
This prevents a few unneeded copies.
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/kobject.c | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/lib/kobject.c b/lib/kobject.c index fd7874032163..718e5101c263 100644 --- a/lib/kobject.c +++ b/lib/kobject.c @@ -216,21 +216,12 @@ static int kobject_add_internal(struct kobject *kobj) static int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, va_list vargs) { - va_list aq; - char *name; - - va_copy(aq, vargs); - name = kvasprintf(GFP_KERNEL, fmt, vargs); - va_end(aq); - - if (!name) - return -ENOMEM; - /* Free the old name, if necessary. */ kfree(kobj->name); - /* Now, set the new name */ - kobj->name = name; + kobj->name = kvasprintf(GFP_KERNEL, fmt, vargs); + if (!kobj->name) + return -ENOMEM; return 0; } @@ -246,12 +237,12 @@ static int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, */ int kobject_set_name(struct kobject *kobj, const char *fmt, ...) { - va_list args; + va_list vargs; int retval; - va_start(args, fmt); - retval = kobject_set_name_vargs(kobj, fmt, args); - va_end(args); + va_start(vargs, fmt); + retval = kobject_set_name_vargs(kobj, fmt, vargs); + va_end(vargs); return retval; } @@ -301,12 +292,9 @@ EXPORT_SYMBOL(kobject_init); static int kobject_add_varg(struct kobject *kobj, struct kobject *parent, const char *fmt, va_list vargs) { - va_list aq; int retval; - va_copy(aq, vargs); - retval = kobject_set_name_vargs(kobj, fmt, aq); - va_end(aq); + retval = kobject_set_name_vargs(kobj, fmt, vargs); if (retval) { printk(KERN_ERR "kobject: can not set name properly!\n"); return retval; |