2005-03-28 16:44:24

by Eran Mann

[permalink] [raw]
Subject: [OOPS] paport related OOPS since 2.6.11-bk7

The OOPS below gets generated consistently when FC3 kudzu is run during
boot (tested between 2.6.11-bk7 and 2.6.11.6-bk1). It seems to be caused
by the hotplug-parport changeset:
http://linux.bkbits.net:8080/linux-2.5/cset@4230791b6YtcIhZDSvvWbzSdUpg2zg?nav=index.html|ChangeSet@-4w
(reverting this changeset eliminates the oops).

parport_pc: VIA 686A/8231 detected
parport_pc: probing current configuration
parport_pc: Current parallel port base: 0x378
parport0: PC-style at 0x378, irq 7 [PCSPP,EPP]
parport_pc: VIA parallel port: io=0x378, irq=7
Unable to handle kernel NULL pointer dereference at virtual address 00000000
printing eip:
d3f37368
*pde = 00000000
Oops: 0000 [#1]
PREEMPT
Modules linked in: parport_pc parport binfmt_misc nls_cp437
nls_iso8859_1 ntfs video thermal processor fan container button battery
ac uhci_hcd usbcore 3c59x mii
CPU: 0
EIP: 0060:[<d3f37368>] Not tainted VLI
EFLAGS: 00010286 (2.6.12-rc1)
EIP is at parport_pc_pci_remove+0x18/0x40 [parport_pc]
eax: c12ef844 ebx: c12ef800 ecx: c12ef844 edx: d3f37350
esi: 00000000 edi: d3f3cc68 ebp: ce53aecc esp: ce53aec0
ds: 007b es: 007b ss: 0068
Process modprobe (pid: 3187, threadinfo=ce53a000 task=cfbe2570)
Stack: c018f481 c12ef800 c12ef844 ce53aedc c0239636 c12ef800 c12ef868
ce53aef8
c02fe67c c12ef844 c040412e d3f3ccb0 d3f3ccb0 d3f375a0 ce53af0c
c02fe6a0
c12ef844 d3f3cc68 00000000 ce53af24 c02feb9a d3f3cc68 d3f3cc68
d3f3cc68
Call Trace:
[<c0103ebf>] show_stack+0x7f/0xa0
[<c0104056>] show_registers+0x156/0x1d0
[<c010427a>] die+0xea/0x180
[<c01149a2>] do_page_fault+0x482/0x6ba
[<c0103b23>] error_code+0x2b/0x30
[<c0239636>] pci_device_remove+0x36/0x40
[<c02fe67c>] device_release_driver+0x7c/0x80
[<c02fe6a0>] driver_detach+0x20/0x30
[<c02feb9a>] bus_remove_driver+0x4a/0x90
[<c02ff162>] driver_unregister+0x12/0x20
[<c0239875>] pci_unregister_driver+0x15/0x20
[<d3f3763e>] parport_pc_exit+0x9e/0xae [parport_pc]
[<c0133fce>] sys_delete_module+0x17e/0x1b0
[<c010303b>] sysenter_past_esp+0x54/0x75
Code: 44 24 04 89 0c 24 ff d2 eb 94 89 f6 8d bc 27 00 00 00 00 55 89 e5
56 53 83 ec 04 8b 45 08 83 c0 44 8b 70 74 c7 40 74 00 00 00 00 <8b> 1e
eb 10 8d 74 26 00 8b 44 9e 04 89 04 24 e8 d4 f4 ff ff 4b


--
Eran Mann
MRV International
http://www.mrv.com


2005-03-28 16:58:52

by Russell King

[permalink] [raw]
Subject: Re: [OOPS] paport related OOPS since 2.6.11-bk7

On Mon, Mar 28, 2005 at 06:45:43PM +0200, Eran Mann wrote:
> The OOPS below gets generated consistently when FC3 kudzu is run during
> boot (tested between 2.6.11-bk7 and 2.6.11.6-bk1). It seems to be caused
> by the hotplug-parport changeset:
> http://linux.bkbits.net:8080/linux-2.5/cset@4230791b6YtcIhZDSvvWbzSdUpg2zg?nav=index.html|ChangeSet@-4w
> (reverting this changeset eliminates the oops).

Please try this instead.

It appears that the parport driver claims on-board superio devices
without actually doing anything. When the driver is removed, we
try to dereference non-existent driver data to unregister the ports.
Since we didn't register anything, it's safe to ignore these devices
in the remove function.

Signed-off-by: Russell King <[email protected]>

diff -up -x BitKeeper -x ChangeSet -x SCCS -x _xlk -x *.orig -x *.rej orig/drivers/parport/parport_pc.c linux/drivers/parport/parport_pc.c
--- orig/drivers/parport/parport_pc.c Sat Mar 19 11:22:08 2005
+++ linux/drivers/parport/parport_pc.c Mon Mar 28 17:55:51 2005
@@ -2976,10 +2976,12 @@ static void __devexit parport_pc_pci_rem

pci_set_drvdata(dev, NULL);

- for (i = data->num - 1; i >= 0; i--)
- parport_pc_unregister_port(data->ports[i]);
+ if (data) {
+ for (i = data->num - 1; i >= 0; i--)
+ parport_pc_unregister_port(data->ports[i]);

- kfree(data);
+ kfree(data);
+ }
}

static struct pci_driver parport_pc_pci_driver = {

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core

2005-03-28 17:17:39

by Eran Mann

[permalink] [raw]
Subject: Re: [OOPS] paport related OOPS since 2.6.11-bk7

Russell King wrote:
> On Mon, Mar 28, 2005 at 06:45:43PM +0200, Eran Mann wrote:
>
>>The OOPS below gets generated consistently when FC3 kudzu is run during
>>boot (tested between 2.6.11-bk7 and 2.6.11.6-bk1). It seems to be caused
>>by the hotplug-parport changeset:
>>http://linux.bkbits.net:8080/linux-2.5/cset@4230791b6YtcIhZDSvvWbzSdUpg2zg?nav=index.html|ChangeSet@-4w
>>(reverting this changeset eliminates the oops).
>
>
> Please try this instead.
>
> It appears that the parport driver claims on-board superio devices
> without actually doing anything. When the driver is removed, we
> try to dereference non-existent driver data to unregister the ports.
> Since we didn't register anything, it's safe to ignore these devices
> in the remove function.
>
> Signed-off-by: Russell King <[email protected]>
>
> diff -up -x BitKeeper -x ChangeSet -x SCCS -x _xlk -x *.orig -x *.rej orig/drivers/parport/parport_pc.c linux/drivers/parport/parport_pc.c
> --- orig/drivers/parport/parport_pc.c Sat Mar 19 11:22:08 2005
> +++ linux/drivers/parport/parport_pc.c Mon Mar 28 17:55:51 2005
> @@ -2976,10 +2976,12 @@ static void __devexit parport_pc_pci_rem
>
> pci_set_drvdata(dev, NULL);
>
> - for (i = data->num - 1; i >= 0; i--)
> - parport_pc_unregister_port(data->ports[i]);
> + if (data) {
> + for (i = data->num - 1; i >= 0; i--)
> + parport_pc_unregister_port(data->ports[i]);
>
> - kfree(data);
> + kfree(data);
> + }
> }
>
> static struct pci_driver parport_pc_pci_driver = {
>

Doesn't seem to help. Do you want me to check anything else?
Mar 28 17:13:44 eran kernel: parport0: PC-style at 0x378, irq 7 [PCSPP,EPP]
Mar 28 17:13:44 eran kernel: parport_pc: VIA parallel port: io=0x378, irq=7
Mar 28 17:13:44 eran kernel: Unable to handle kernel NULL pointer
dereference at virtual address 00000000
Mar 28 17:13:44 eran kernel: printing eip:
Mar 28 17:13:44 eran kernel: d3f37368
Mar 28 17:13:44 eran kernel: *pde = 00000000
Mar 28 17:13:44 eran kernel: Oops: 0000 [#1]
Mar 28 17:13:44 eran kernel: PREEMPT
Mar 28 17:13:44 eran kernel: Modules linked in: parport_pc parport
binfmt_misc nls_cp437 nls_iso8859_1 ntfs video thermal processor fan
container button battery ac uhci_hcd usbcore 3c59x mii
Mar 28 17:13:44 eran kernel: CPU: 0
Mar 28 17:13:44 eran kernel: EIP: 0060:[<d3f37368>] Not tainted VLI
Mar 28 17:13:44 eran kernel: EFLAGS: 00010286 (2.6.11-bk6-patched)
Mar 28 17:13:44 eran kernel: EIP is at parport_pc_pci_remove+0x18/0x40
[parport_pc]
Mar 28 17:13:44 eran kernel: eax: c12ef844 ebx: c12ef800 ecx:
c12ef844 edx: d3f37350
Mar 28 17:13:44 eran kernel: esi: 00000000 edi: d3f3cd48 ebp:
ce585ecc esp: ce585ec0
Mar 28 17:13:44 eran kernel: ds: 007b es: 007b ss: 0068
Mar 28 17:13:44 eran kernel: Process modprobe (pid: 3503,
threadinfo=ce585000 task=cffdf040)
Mar 28 17:13:44 eran kernel: Stack: c0190441 c12ef800 c12ef844 ce585edc
c0237c06 c12ef800 c12ef868 ce585ef8
Mar 28 17:13:44 eran kernel: c02f9c5c c12ef844 c03ff1cd d3f3cd90
d3f3cd90 d3f375a0 ce585f0c c02f9c80
Mar 28 17:13:44 eran kernel: c12ef844 d3f3cd48 00000000 ce585f24
c02fa17a d3f3cd48 d3f3cd48 d3f3cd48
Mar 28 17:13:44 eran kernel: Call Trace:
Mar 28 17:13:44 eran kernel: [<c0103ecf>] show_stack+0x7f/0xa0
Mar 28 17:13:44 eran kernel: [<c0104066>] show_registers+0x156/0x1d0
Mar 28 17:13:44 eran kernel: [<c010428a>] die+0xea/0x180
Mar 28 17:13:44 eran kernel: [<c0114e22>] do_page_fault+0x482/0x6ba
Mar 28 17:13:44 eran kernel: [<c0103b33>] error_code+0x2b/0x30
Mar 28 17:13:44 eran kernel: [<c0237c06>] pci_device_remove+0x36/0x40
Mar 28 17:13:44 eran kernel: [<c02f9c5c>] device_release_driver+0x7c/0x80
Mar 28 17:13:44 eran kernel: [<c02f9c80>] driver_detach+0x20/0x30
Mar 28 17:13:44 eran kernel: [<c02fa17a>] bus_remove_driver+0x4a/0x90
Mar 28 17:13:44 eran kernel: [<c02fa742>] driver_unregister+0x12/0x20
Mar 28 17:13:44 eran kernel: [<c0237e45>] pci_unregister_driver+0x15/0x20
Mar 28 17:13:44 eran kernel: [<d3f3763e>] parport_pc_exit+0x9e/0xae
[parport_pc]
Mar 28 17:13:44 eran kernel: [<c01343fe>] sys_delete_module+0x17e/0x1b0
Mar 28 17:13:44 eran kernel: [<c010304b>] sysenter_past_esp+0x54/0x75
Mar 28 17:13:44 eran kernel: Code: 44 24 04 89 0c 24 ff d2 eb 94 89 f6
8d bc 27 00 00 00 00 55 89 e5 56 53 83 ec 04 8b 45 08 83 c0 44 8b 70 74
c7 40 74 00 00 00 00 <8b> 1e eb 10 8d 74 26 00 8b 44 9e 04 89 04 24 e8
d4 f4 ff ff 4b


--
Eran Mann
Senior Software Engineer
MRV International
Tel: 972-4-9936297
Fax: 972-4-9890430
http://www.mrv.com

2005-03-28 19:01:11

by Russell King

[permalink] [raw]
Subject: Re: [OOPS] paport related OOPS since 2.6.11-bk7

On Mon, Mar 28, 2005 at 07:19:00PM +0200, Eran Mann wrote:
> Mar 28 17:13:44 eran kernel: EIP is at parport_pc_pci_remove+0x18/0x40 [parport_pc]

Are you sure you reinstalled the kernel modules after rebuilding?
parport_pc_pci_remove() was 0x40 bytes long before, and still seems
to be. Also, the Code: lines are identical. This means you're
running the same (unpatched) code as you were before, so you aren't
actually running my fix.

Can you double-check please?

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core

2005-03-28 20:45:18

by Eran Mann

[permalink] [raw]
Subject: Re: [OOPS] paport related OOPS since 2.6.11-bk7

Russell King wrote:

>Can you double-check please?
>
>
I'm sorry, I booted the wrong image.
The fix does work (tested against 2.6.11.6-bk1).