[PATCH 07/11] kobject: do not copy vargs, just pass them around

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-kernel@...>
Cc: Kay Sievers <kay.sievers@...>, Greg Kroah-Hartman <gregkh@...>
Date: Wednesday, April 30, 2008 - 7:57 pm

From: Kay Sievers <kay.sievers@vrfy.org>

This prevents a few unneeded copies.

Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 lib/kobject.c |   28 ++++++++--------------------
 1 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/lib/kobject.c b/lib/kobject.c
index fd78740..718e510 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;
-- 
1.5.5.1

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 11/11] klist: fix coding style errors in klist.h and ..., Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)
[PATCH 10/11] driver core: remove no longer used "struct cla..., Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)
[PATCH 09/11] pcmcia: remove pccard_sysfs_interface warnings, Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)
[PATCH 08/11] devres: support addresses greater than an unsi..., Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)
[PATCH 07/11] kobject: do not copy vargs, just pass them aro..., Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)
[PATCH 06/11] sysfs: sysfs_update_group stub for CONFIG_SYSF..., Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)
[PATCH 05/11] DEBUGFS: Correct location of debugfs API docum..., Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)
[PATCH 04/11] driver core: warn about duplicate driver names..., Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)
[PATCH 03/11] klist: implement klist_add_{after|before}(), Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)
[PATCH 02/11] klist: implement KLIST_INIT() and DEFINE_KLIST(), Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)
[PATCH 01/11] sysfs: Disallow truncation of files in sysfs, Greg Kroah-Hartman, (Wed Apr 30, 7:57 pm)