Skip to contentSkip to conversation

don't prefer unsuited consoles on registration

PATCH New Jan Kiszka 1 participant 1 message Jan 30, 2008

lore
Share & tools
lore

Jan Kiszka

author
#0 lore raw

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.

---
 kernel/printk.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
kernel/printk.c +5 -2
Index: b/kernel/printk.c
===================================================================
@@ -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;
+			}
 		}
 	}