From: Tom Rini <trini@kernel.crashing.org>

OK.  One thing which __setup functions are allowed to do, which
__early_param are not is to eat the command line (typically foo =
strchr(str, ','); *foo++ = 0).  So I've audited all of the converts of
__setup to __early_param, and got the following:
- Drop the hunk of early-param-i386.patch that changes drivers/pci/pci.c
- This is a fix for console= which inadvertantly does
... strcpy(name, str, sizeof(name)) ...
... options = strchr(str, ',') ...
*options++ = 0;
... fiddle with name ...



---

 25-akpm/kernel/printk.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN kernel/printk.c~early-param-fixes kernel/printk.c
--- 25/kernel/printk.c~early-param-fixes	2004-03-30 19:49:04.370274200 -0800
+++ 25-akpm/kernel/printk.c	2004-03-30 19:49:04.372273896 -0800
@@ -131,7 +131,7 @@ static int __init console_setup(char *st
 	} else
 		strncpy(name, str, sizeof(name) - 1);
 	name[sizeof(name) - 1] = 0;
-	if ((options = strchr(str, ',')) != NULL)
+	if ((options = strchr(name, ',')) != NULL)
 		*(options++) = 0;
 #ifdef __sparc__
 	if (!strcmp(str, "ttya"))

_