2002-10-05 03:32:15

by William Lee Irwin III

[permalink] [raw]
Subject: 2.5.40 serial oops

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


--- linux-2.5.40/drivers/serial/8250_pci.c.orig 2002-10-04 20:27:50.000000000 -0700
+++ linux-2.5.40/drivers/serial/8250_pci.c 2002-10-04 20:28:02.000000000 -0700
@@ -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);