Commit 545a4f89 authored by Tony Lindgren's avatar Tony Lindgren Committed by Greg Kroah-Hartman

printk: Check valid console index for preferred console

Let's check for valid console index values for preferred console to avoid
bogus console index numbers from kernel command line.

Let's also return an error for negative index numbers for the preferred
console. Unlike for device drivers, a negative index is not valid for the
preferred console.

Let's also constify idx while at it.
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
Link: https://lore.kernel.org/r/20231012064300.50221-1-tony@atomide.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a07b50d8
......@@ -347,7 +347,7 @@ enum con_flush_mode {
CONSOLE_REPLAY_ALL,
};
extern int add_preferred_console(char *name, int idx, char *options);
extern int add_preferred_console(char *name, const short idx, char *options);
extern void console_force_preferred_locked(struct console *con);
extern void register_console(struct console *);
extern int unregister_console(struct console *);
......
......@@ -2404,12 +2404,20 @@ static void set_user_specified(struct console_cmdline *c, bool user_specified)
console_set_on_cmdline = 1;
}
static int __add_preferred_console(char *name, int idx, char *options,
static int __add_preferred_console(char *name, const short idx, char *options,
char *brl_options, bool user_specified)
{
struct console_cmdline *c;
int i;
/*
* We use a signed short index for struct console for device drivers to
* indicate a not yet assigned index or port. However, a negative index
* value is not valid for preferred console.
*/
if (idx < 0)
return -EINVAL;
/*
* See if this tty is not yet registered, and
* if we have a slot free.
......@@ -2513,7 +2521,7 @@ __setup("console=", console_setup);
* commonly to provide a default console (ie from PROM variables) when
* the user has not supplied one.
*/
int add_preferred_console(char *name, int idx, char *options)
int add_preferred_console(char *name, const short idx, char *options)
{
return __add_preferred_console(name, idx, options, NULL, false);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment