Skip to contentSkip to conversation

2.5.40 serial oops

PATCH William Lee Irwin III 1 participant 1 message Oct 5, 2002

lore
Share & tools
lore
#0 lore raw

On shutdown, ThinkPad T21's commit this error:

Program received signal SIGSEGV, Segmentation fault. 0x00000000 in ?? ()
(gdb) bt

#0  0x00000000 in ?? ()
#1  0xc01b9eb3 in pci_remove_one (dev=0xc1675c00) at 8250_pci.c:774
#2  0xc01b3a25 in pci_device_remove (dev=0xc1675c50) at pci-driver.c:68
#3  0xc01bdbae in device_shutdown () at power.c:106
#4  0xc0121421 in sys_reboot (magic1=-18751827, magic2=672274793, 
    cmd=1126301404, arg=0x8049960) at sys.c:393

#5 0xc0108a8f in syscall_call () at process.c:685

(gdb) p *priv->board
$1 = {flags = 0, num_ports = 1, base_baud = 115200, uart_offset = 0,
reg_shift = 0, init_fn = 0, first_uart_offset = 0}
(gdb) p pci_boards - priv->board
$2 = 0

Against 2.5.40

drivers/serial/8250_pci.c renamed from drivers/serial/8250_pci.c.orig +2 -1
@@ -771,7 +771,8 @@
 		for (i = 0; i < priv->nr; i++)
 			unregister_serial(priv->line[i]);
 
-		priv->board->init_fn(dev, priv->board, 0);
+		if (priv->board->init_fn)
+			priv->board->init_fn(dev, priv->board, 0);
 
 		pci_disable_device(dev);