don't prefer unsuited consoles on registration
PATCH 1/1 don't prefer unsuited consoles on registration
KGDB triggers a (probably so far theoretical) issue of the automatic init console election: If some console happens to be registered first which does not provide a tty binding (!console->device), it prevents that more suited consoles which are registered later on can enter the candidate pool for console_device(). This is observable with KGDB's console which may already be registered (and exploited!) during early debugger connections, that is before any regular console registration.
This patch fixes the issue by postponing the final, automated preferred_console selection until someone with a non-NULL device handler comes around.
Signed-off-by Jan Kiszka <[email protected]>
--- kernel/printk.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
kernel/printk.c +5 -2
@@ -1126,8 +1126,11 @@ void register_console(struct console *co console->index =0 ;if (console->setup ==NULL || console->setup (console,NULL ) ==0 ) { - console->flags |=CON_ENABLED |CON_CONSDEV ; - preferred_console =0 ; + console->flags |=CON_ENABLED ; +if (console->device) { + console->flags |=CON_CONSDEV ; + preferred_console =0 ; + } } }