On 2022-10-19, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: >> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c >> index e4f1e7478b52..867becc40021 100644 >> --- a/kernel/printk/printk.c >> +++ b/kernel/printk/printk.c >> @@ -3229,32 +3244,30 @@ int unregister_console(struct console *console) >> if (res > 0) >> return 0; >> >> - res = -ENODEV; >> console_lock(); >> - if (console_drivers == console) { >> - console_drivers=console->next; >> - res = 0; >> - } else { >> - for_each_console(con) { >> - if (con->next == console) { >> - con->next = console->next; >> - res = 0; >> - break; >> - } >> - } >> + >> + /* Disable it unconditionally */ >> + console->flags &= ~CON_ENABLED; >> + >> + if (hlist_unhashed(&console->node)) { > > How can this ever be hit? The console lock is held, so it shouldn't > have gone away already. Or am I missing something else here? Mainline also has this check. I expect it is for the case that some code tries to call unregister_console() for a console that is not registered. Since register_console() does not return if it succeeded, I suppose some code somewhere my try to unregister without knowing that it never registered in the first place. > Other than that minor question, looks good to me! > > Reviewed-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Thanks! John