Messages in this thread | | | Date | Tue, 15 Feb 2022 18:58:14 +0100 | From | Petr Mladek <> | Subject | Re: [PATCH v2] printk: Set console_set_on_cmdline=1 when __add_preferred_console() is called with user_specified == true |
| |
On Tue 2022-02-15 12:15:58, Sergey Senozhatsky wrote: > On (22/02/14 14:21), Andre Kalb wrote: > > +static void set_user_specified(struct console_cmdline *c, bool user_specified) > > +{ > > + if (!user_specified) > > + return; > > + > > + c->user_specified = true; > > + console_set_on_cmdline = 1; > > +} > > In original code we always set c->user_specified. Is it guaranteed that > ->user_specified is properly initialized to 0? Maybe can do something like:
It is guaranteed. console_cmdline is a static array initialized with zeroes. The 2nd set_user_specified() call is done for a not-yet-used slot in the array, so it must be zero.
> static void set_user_specified(struct console_cmdline *c, bool user_specified) > { > c->user_specified = user_specified;
This will change the behavior for the 1st set_user_specified() call. It happens when the same console is added more times by device tree, SPCR, and/or command line. c->user_specified must stay "true" when at least one __add_preferred_console() call added it from the command line.
> if (!user_specified) > return; > > console_set_on_cmdline = 1; > }
I agree that it is not obvious. It would make sense to add a comment into the code. I am going to propose something in a reply to the original post.
Best Regards, Petr
| |