Bug im debian Kernel
Jan 'RedBully' Seiffert
redbully at cc.fh-luh.de
Sat Jul 19 20:26:33 CEST 2008
Sebastian Anding wrote:
> Hallo Liste,
>
> seit 2.6.22-3-686 auf debian testing, kommt beim booten des Thinkpads 600
> ein Oops:
>
> [ 108.548264] BUG: unable to handle kernel NULL pointer dereference at
> 00000174
> [ 108.548481] IP: [<c0217ff0>] pnp_activate_dev+0x3/0x37
> [ 108.548650] *pde = 00000000
> [ 108.548782] Oops: 0000 [#1] SMP
> [ 108.548951] Modules linked in: snd_cs4232(+) snd_cs4236 snd_opl3_lib
> snd_hwdep snd_cs4236_lib snd_mpu401_uart snd_cs4231_lib snd_pcm_oss
> snd_mixer_oss snd_pcm pcnet_cs 8390 snd_page_alloc snd_seq_dummy ehci_hcd
> ohci_hcd snd_seq_oss snd_seq_midi snd_rawmidi analog snd_seq_midi_event
> snd_seq pcmcia firmware_class ns558 gameport snd_timer snd_seq_device snd
> soundcore battery ac rtc video output irtty_sir sir_dev button irda
> crc_ccitt psmouse parport_pc parport pcspkr serio_raw i2c_piix4 i2c_core
> yenta_socket rsrc_nonstatic pcmcia_core evdev ext3 jbd mbcache
> sha256_generic aes_i586 aes_generic cbc dm_crypt crypto_blkcipher dm_mirror
> dm_snapshot dm_mod ide_disk piix ide_pci_generic ide_core ata_generic floppy
> uhci_hcd libata usbcore scsi_mod dock thermal processor fan
> [ 108.551624]
> [ 108.551624] Pid: 1718, comm: modprobe Not tainted (2.6.25-2-686 #1)
> [ 108.551624] EIP: 0060:[<c0217ff0>] EFLAGS: 00010246 CPU: 0
> [ 108.551624] EIP is at pnp_activate_dev+0x3/0x37
> [ 108.551624] EAX: 00000000 EBX: 00000000 ECX: 00000014 EDX: 00000000
> [ 108.551624] ESI: 00000000 EDI: c94c3000 EBP: c94c309c ESP: c8d09e00
> [ 108.551624] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> [ 108.551624] Process modprobe (pid: 1718, ti=c8d08000 task=c8cded70
> task.ti=c8d08000)
> [ 108.551624] Stack: 00000000 caaa73a3 c86b9200 00000000 caaa76f2 00000000
> c94c3000 caaa9f20
> [ 108.551624] c02170d1 c94c3000 00000000 caaa9f3c c0239766 c94c3000
> c0352200 caaa9f3c
> [ 108.551624] c0239865 c02398ab 00000000 c0238d7e c947aa9c c947aaa0
> c94c3054 00000000
> [ 108.551624] Call Trace:
> [ 108.551624] [<caaa73a3>] snd_cs423x_pnp_init_wss+0xd/0x89 [snd_cs4232]
> [ 108.551624] [<caaa76f2>] snd_cs4232_pnpbios_detect+0x88/0xe8
> [snd_cs4232]
> [ 108.551624] [<c02170d1>] pnp_device_probe+0x63/0x82
> [ 108.551624] [<c0239766>] driver_probe_device+0xb6/0x128
> [ 108.551624] [<c0239865>] __driver_attach+0x0/0x79
> [ 108.551624] [<c02398ab>] __driver_attach+0x46/0x79
> [ 108.551624] [<c0238d7e>] bus_for_each_dev+0x37/0x59
> [ 108.551624] [<c0239600>] driver_attach+0x11/0x13
> [ 108.551624] [<c0239865>] __driver_attach+0x0/0x79
> [ 108.551624] [<c0239422>] bus_add_driver+0x8a/0x1a8
> [ 108.551624] [<c0239099>] bus_remove_driver+0x6f/0x7e
> [ 108.551624] [<c0239a4d>] driver_register+0x45/0x99
> [ 108.551624] [<ca965027>] alsa_card_cs423x_init+0x27/0x68 [snd_cs4232]
> [ 108.551624] [<c01414ac>] sys_init_module+0x17d3/0x1943
> [ 108.551624] [<c01dc31d>] prio_tree_insert+0x1b/0x1e9
> [ 108.551624] [<c0128d1a>] __request_region+0x0/0x80
> [ 108.551624] [<c010aa2a>] sys_mmap2+0x96/0xa0
> [ 108.551624] [<c01077e8>] sysenter_past_esp+0x6d/0xa5
> [ 108.551624] =======================
> [ 108.551624] Code: 93 9c 00 00 00 52 50 68 31 f6 31 c0 e8 ab cb f0 ff b8
> f0 ff ff ff 83 c4 0c eb 09 b8 ed ff ff ff eb 02 31 c0 5b 5e 5f c3 53 31 d2
> <83> b8 74 01 00 00 00 89 c3 75 25 e8 73 ff ff ff ba f0 ff ff ff
> [ 108.551624] EIP: [<c0217ff0>] pnp_activate_dev+0x3/0x37 SS:ESP
> 0068:c8d09e00
> [ 108.551665] ---[ end trace ae5e1a7c6bd03ca3 ]---
>
> Was braucht man noch um den sinnvoll zu melden und wohin sollte der Bug
> gemeldet werden? Die Kernelmailingliste ist doch nicht fuer debian Kernel
> zustaendig afaik.
>
Naja, mit alten vendor-Kerneln auf der Kernel-Mailingliste auftauchen
ist wirklich nicht gern gesehen wenn man voher nicht wenigstens versucht
hat, das Problem auf einem aktuellen kernel.org zu verifizieren.
Aber das scheint ein "echter" Bug zu sein...
"pnp_device_probe()" ruft die .probe Funktion aus
"static struct pnp_driver cs4232_pnp_driver" auf, das ist
"snd_cs4232_pnpbios_detect()". Dort wird Speicher fuer die Karte
alloziert und dann "snd_card_cs4232_pnp()" aufgerufen.
"snd_pnp_cs4232_pnp()" ruft dann sofort "snd_cs423x_pnp_init_wss()" auf,
ungluecklicher weise hat es nur den Speicher nicht initalisiert wie
seine Schwesterfunktion "snd_card_cs423x_pnpc()" (man beachte das x und
das c), tja dann rumst es in "snd_cs423x_pnp_init_wss()", genauer in
"pnp_activate_dev()":
> static int __devinit snd_cs423x_pnp_init_wss(int dev, struct pnp_dev *pdev)
> {
> if (pnp_activate_dev(pdev) < 0) {
> printk(KERN_ERR IDENT " WSS PnP configure failed for WSS (out of resources?)\n");
> return -EBUSY;
> }
pdev ist NULL.
Das dumme ist hier, das es ueber irgendwelchen "Sondercode" fuer die
CS4232 geht, der nicht so ganz reif ist...
Der Zitierte Code ist aus 2.6.25, wie das in 2.6.26 aussieht (oder
2.6.27-git1, -next, -mm, -alsa), weiss ich grad nicht.
Moment...
Im alsa git ist es immer noch so, und ich glaube das ist kap0tt seit es
eingefuegt wurde in 2006.
2006-01-03 Takashi Iwai [ALSA] Add CS4232 PnP BIOS support
http://git.alsa-project.org/?p=alsa-kernel.git;a=commitdiff;h=a9824c868a2c7e310e6263ea4bc9f35cbbec8227
Kann das jemand bestaetigen? Dann:
"Gehen sie zur Alsa-Mailinliste, gehen sie direkt dorthin, gehen sie
nicht ueber LKML."
> Schoenes WE
> Sebastian
Gruss
Jan
--
The universe started in 1970. Anyone claiming to be over 38 is
lying about their age.
More information about the Linux
mailing list