From: Eric W. Biederman Date: Sat, 12 Jul 2008 21:40:32 +0000 (+0000) Subject: serial8250: sanity check nr_uarts on all paths. X-Git-Tag: v2.6.25.12~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=57dc6158b397beba881fa405cbafcfb99b57dd5e;p=thirdparty%2Fkernel%2Fstable.git serial8250: sanity check nr_uarts on all paths. commit 05d81d2222beec7b63ac8c1c8cdb5bb4f82c2bad upstream I had 8250.nr_uarts=16 in the boot line of a test kernel and I had a weird mysterious crash in sysfs. After taking an in-depth look I realized that CONFIG_SERIAL_8250_NR_UARTS was set to 4 and I was walking off the end of the serial8250_ports array. Ouch!!! Don't let this happen to someone else. Signed-off-by: Eric W. Biederman Acked-by: Alan Cox Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index d60705e9d0076..fe989c5cd3f84 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c @@ -2564,6 +2564,9 @@ static struct console serial8250_console = { static int __init serial8250_console_init(void) { + if (nr_uarts > UART_NR) + nr_uarts = UART_NR; + serial8250_isa_init_ports(); register_console(&serial8250_console); return 0;