2020-03-17 02:04:52

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] printk: handle blank console arguments passed in.

On Tue, 17 Mar 2020 01:34:43 +0000
Shreyas Joshi <[email protected]> wrote:

Hi Shreyas!

> If uboot passes a blank string to console_setup then it results in a trashed memory.
> Ultimately, the kernel crashes during freeing up the memory. This fix checks if there is a blank parameter being passed to console_setup from uboot.
> In case it detects that the console parameter is blank then it doesn't setup the serial device and it gracefully exits.

Please line wrap you commit messages to at most 75 characters.

>
> Signed-off-by: Shreyas Joshi <[email protected]>
> ---
> kernel/printk/printk.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index ad4606234545..e9ad730991e0 100644
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -2165,7 +2165,10 @@ static int __init console_setup(char *str)
> char buf[sizeof(console_cmdline[0].name) + 4]; /* 4 for "ttyS" */
> char *s, *options, *brl_options = NULL;
> int idx;
> -
> + if (str[0] == 0) {
> + console_loglevel = 0;
> + return 1;

Hmm, I wonder if this should produce a warning :-/

-- Steve

> + }
> if (_braille_console_setup(&str, &brl_options))
> return 1;
>
> --
> 2.20.1


2020-03-17 02:07:02

by Sergey Senozhatsky

[permalink] [raw]
Subject: Re: [PATCH] printk: handle blank console arguments passed in.

On (20/03/16 21:39), Steven Rostedt wrote:
[..]
> >
> > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index ad4606234545..e9ad730991e0 100644
> > --- a/kernel/printk/printk.c
> > +++ b/kernel/printk/printk.c
> > @@ -2165,7 +2165,10 @@ static int __init console_setup(char *str)
> > char buf[sizeof(console_cmdline[0].name) + 4]; /* 4 for "ttyS" */
> > char *s, *options, *brl_options = NULL;
> > int idx;
> > -
> > + if (str[0] == 0) {
> > + console_loglevel = 0;
> > + return 1;
>
> Hmm, I wonder if this should produce a warning :-/

Hmm. Maybe the warning can seat in __setup() handling?
There are 300+ places that theoretically can receive blank boot param

$ git grep "__setup(\".*=\"" | wc -l
307

I'd assume that not all of those can handle blank params. At the same
time, do we have cases when passing blank boot params is OK? E.g.
"... root=/dev/sda1 foo= bar= ..."

-ss