diff options
Diffstat (limited to 'init/main.c')
| -rw-r--r-- | init/main.c | 25 | 
1 files changed, 13 insertions, 12 deletions
diff --git a/init/main.c b/init/main.c index 9d454f09f3b..44b2433334c 100644 --- a/init/main.c +++ b/init/main.c @@ -225,13 +225,9 @@ static int __init loglevel(char *str)  early_param("loglevel", loglevel); -/* - * Unknown boot options get handed to init, unless they look like - * unused parameters (modprobe will find them in /proc/cmdline). - */ -static int __init unknown_bootoption(char *param, char *val) +/* Change NUL term back to "=", to make "param" the whole string. */ +static int __init repair_env_string(char *param, char *val)  { -	/* Change NUL term back to "=", to make "param" the whole string. */  	if (val) {  		/* param=val or param="val"? */  		if (val == param+strlen(param)+1) @@ -243,6 +239,16 @@ static int __init unknown_bootoption(char *param, char *val)  		} else  			BUG();  	} +	return 0; +} + +/* + * Unknown boot options get handed to init, unless they look like + * unused parameters (modprobe will find them in /proc/cmdline). + */ +static int __init unknown_bootoption(char *param, char *val) +{ +	repair_env_string(param, val);  	/* Handle obsolete-style parameters */  	if (obsolete_checksetup(param)) @@ -732,11 +738,6 @@ static char *initcall_level_names[] __initdata = {  	"late parameters",  }; -static int __init ignore_unknown_bootoption(char *param, char *val) -{ -	return 0; -} -  static void __init do_initcall_level(int level)  {  	extern const struct kernel_param __start___param[], __stop___param[]; @@ -747,7 +748,7 @@ static void __init do_initcall_level(int level)  		   static_command_line, __start___param,  		   __stop___param - __start___param,  		   level, level, -		   ignore_unknown_bootoption); +		   repair_env_string);  	for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++)  		do_one_initcall(*fn);  |