Re: [PATCH 5/8] printk: Try to register each console as Braille first

From: Chris Down

Date: Thu Feb 19 2026 - 10:00:06 EST


Petr Mladek writes:
@@ -3918,6 +3922,12 @@ static int try_enable_preferred_console(struct console *newcon,
newcon->match(newcon, pc->name, pc->index, pc->options) != 0) {
/* default matching */
BUILD_BUG_ON(sizeof(pc->name) != sizeof(newcon->name));
+ /*
+ * Two entries might have the same pc->name when one was
+ * defined via "devname".
+ */
+ if (try_only_braille && !is_braille_console_preferred(pc))
+ continue;
if (strcmp(pc->name, newcon->name) != 0)
continue;
if (newcon->index >= 0 &&
@@ -3926,7 +3936,7 @@ static int try_enable_preferred_console(struct console *newcon,
if (newcon->index < 0)
newcon->index = pc->index;

- if (is_braille_console_preferred(pc))
+ if (try_only_braille)
return _braille_register_console(newcon, pc);

err = console_call_setup(newcon, pc->options);

This doesn't look right to me. By putting the Braille dispatch inside the if block, you bypass it whenever newcon->match matches.

So that means if a console driver matches, the execution skips this default matching block completely, falls through, and silently sets CON_ENABLED without ever registering it as a Braille console or adding it to console_list, and the console is silently lost.

The try_only_braille and is_braille_console_preferred(pc) checks likely need to happen before or independently of the match() vs. default matching branch.