Re: [PATCH v3.18-rc3] param: fix crash on bad kernel arguments

From: Rusty Russell
Date: Tue Nov 11 2014 - 03:26:17 EST


Daniel Thompson <daniel.thompson@xxxxxxxxxx> writes:
> Currently if the user passes an invalid value on the kernel command line
> then the kernel will crash during argument parsing. On most systems this
> is very hard to debug because the console hasn't been initialized yet.

Good catch, applied!

Thanks,
Rusty.

>
> This is a regression due to commit 51e158c12aca ("param: hand arguments
> after -- straight to init") which, in response to the systemd debug
> controversy, made it possible to explicitly pass arguments to init. To
> achieve this parse_args() was extended from simply returning an error
> code to returning a pointer. Regretably the new init args logic does not
> perform a proper validity check on the pointer resulting in a crash.
>
> This patch fixes the validity check. Should the check fail then no arguments
> will be passed to init. This is reasonable and matches how the kernel treats
> its own arguments (i.e. no error recovery).
>
> Signed-off-by: Daniel Thompson <daniel.thompson@xxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> ---
> init/main.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/init/main.c b/init/main.c
> index 800a0da..321d0ce 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -544,7 +544,7 @@ asmlinkage __visible void __init start_kernel(void)
> static_command_line, __start___param,
> __stop___param - __start___param,
> -1, -1, &unknown_bootoption);
> - if (after_dashes)
> + if (!IS_ERR_OR_NULL(after_dashes))
> parse_args("Setting init args", after_dashes, NULL, 0, -1, -1,
> set_init_arg);
>
> --
> 1.9.3
--
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/