[PATCH] Driver Core fixes for 2.6.10-rc2

From: Greg KH
Date: Fri Nov 19 2004 - 17:02:56 EST



ChangeSet 1.2164, 2004/11/19 08:47:13-08:00, akpm@xxxxxxxx

[PATCH] fix kobject varargs bug

From: Gerd Knorr <kraxel@xxxxxxxxxxx>

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.

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

Signed-off-by: Gerd Knorr <kraxel@xxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <greg@xxxxxxxxx>


lib/kobject.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)


diff -Nru a/lib/kobject.c b/lib/kobject.c
--- a/lib/kobject.c 2004-11-19 11:36:44 -08:00
+++ b/lib/kobject.c 2004-11-19 11:36:44 -08:00
@@ -232,11 +232,12 @@
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 @@
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 @@
/* 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/