Re: [patch] 2.6.10-rc1-mm4: bttv-driver.c compile error

From: Gerd Knorr
Date: Thu Nov 18 2004 - 12:25:23 EST


> kobject_register failed forBA?ÿÿÿÿ (-17)

Yet another kobject bug. It uses the varargs list twice in a illegal
way. That doesn't harm on i386 by pure luck, but blows things up on
amd64 machines. The patch below fixes it.

Enjoy,

Gerd

==============================[ cut here ]==============================
Subject: [patch] fix kobject varargs bug

Using var args list twice without calling va_start twice is illegal.

Signed-off-by: Gerd Knorr <kraxel@xxxxxxxxxxx>
---
lib/kobject.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)

Index: linux-2.6.10-rc2/lib/kobject.c
===================================================================
--- linux-2.6.10-rc2.orig/lib/kobject.c 2004-11-17 18:41:43.000000000 +0100
+++ linux-2.6.10-rc2/lib/kobject.c 2004-11-18 17:37:08.851041667 +0100
@@ -232,11 +232,12 @@ int kobject_set_name(struct kobject * ko
va_list args;
char * name;

- va_start(args,fmt);
/*
* First, try the static array
*/
+ va_start(args,fmt);
need = vsnprintf(kobj->name,limit,fmt,args);
+ va_end(args);
if (need < limit)
name = kobj->name;
else {
@@ -249,7 +250,9 @@ int kobject_set_name(struct kobject * ko
error = -ENOMEM;
goto Done;
}
+ va_start(args,fmt);
need = vsnprintf(name,limit,fmt,args);
+ va_end(args);

/* Still? Give up. */
if (need >= limit) {
@@ -266,7 +269,6 @@ int kobject_set_name(struct kobject * ko
/* Now, set the new name */
kobj->k_name = name;
Done:
- va_end(args);
return error;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/