Messages in this thread | | | Date | Tue, 07 May 2013 09:18:51 +0200 | From | Andreas Bießmann <> | Subject | Re: [PATCH v2] register console: prevent adding the same console twice |
| |
ping?
Am 2013-03-25 09:59, schrieb Andreas Bießmann: > This patch guards the console_drivers list to be corrupted. The > for_each_console() macro insist on a strictly forward list ended by > NULL: > > con0->next->con1->next->NULL > > Without this patch it may happen easily to destroy this list for > example by > adding 'earlyprintk' twice, especially on embedded devices where the > early > console is often a single static instance. This will result in the > following > list: > > con0->next->con0 > > This in turn will result in an endless loop in console_unlock() later > on by > printing the first __log_buf line endlessly. > > Signed-off-by: Andreas Bießmann <andreas@biessmann.de> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: Kay Sievers <kay@vrfy.org> > Cc: Ben Hutchings <ben@decadent.org.uk> > Cc: stable@kernel.org > --- > since v1: > * use WARN() as Ben suggested > * print 'already registered' instead of 'prevent registering' > > kernel/printk.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/kernel/printk.c b/kernel/printk.c > index abbdd9e..180ee25 100644 > --- a/kernel/printk.c > +++ b/kernel/printk.c > @@ -2214,6 +2214,13 @@ void register_console(struct console *newcon) > unsigned long flags; > struct console *bcon = NULL; > > + if (console_drivers) > + for_each_console(bcon) > + if (WARN(bcon == newcon, > + "console '%s%d' already registered\n", > + bcon->name, bcon->index)) > + return; > + > /* > * before we register a new CON_BOOT console, make sure we don't > * already have a valid console -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |