Skip to contentSkip to conversation

serial8250: Sanity check nr_uarts on all paths.

PATCH In review Eric W. Biederman 2 participants 3 messages Jul 11, 2008 TTY layer and serial drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 serial8250: Sanity check nr_uarts on all paths.

I had 8250.nr_uarts=16 in the boot line of a test kernel and I had a weird mysterious crash in sysfs. After an taking 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.

---
 drivers/serial/8250.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
drivers/serial/8250.c +3 -0
index 1bc00b7..be95e55 100644
@@ -2623,6 +2623,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;
Signature · 1 line
1.5.3.rc6.17.g1911
Acked-by on v1 1/1
#1 lore raw
Quoted 7 lines · On Fri, 11 Jul 2008 12:30:42 -0700 [email protected] (Eric W. Biederman)…

I had 8250.nr_uarts=16 in the boot line of a test kernel and I had a weird mysterious crash in sysfs. After an taking 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.

Quoted 5 lines

Ouch!!!

Don't let this happen to someone else.

Added to ttydev tree but please fire straight at Linus in case he fancies it for 2.6.26

author Acked-by Alan Cox on v1 1/1
#2 lore raw
In reply to Eric W. Biederman

I had 8250.nr_uarts=16 in the boot line of a test kernel and I had a weird mysterious crash in sysfs. After an taking 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.

---

Quoted 2 lines · Alan Cox

Added to ttydev tree but please fire straight at Linus in case he fancies it for 2.6.26

 drivers/serial/8250.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
drivers/serial/8250.c +3 -0
index 1bc00b7..be95e55 100644
@@ -2623,6 +2623,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;
Signature · 1 line
1.5.3.rc6.17.g1911