Alsa driver 1.0.10 causes oopses on modprobing snd_virmidi.ko or snd_mpu401.ko
on both gentoo-sources kernels 2.6.13-gentoo-rx and 2.6.14-gentoo-rx (x = any).
I first worked this around by commenting out:
#if 0
if ((err = snd_card_set_generic_dev(card)) < 0)
goto __nodev;
#endif
in the affected files (to mimic 1.0.10rc2 and previous behaviour).
The correct fix however is already in the upstream (alsa) cvs.
I'll post the patch in the next comment.
The problem is worse with gentoo-sources 2.6.14-gentoo-r4, as even the in-kernel
driver (which is bit-identical to the alsa-driver-1.0.10 file) produces this
failure.
Reproducible: Always
Steps to Reproduce:
1. emerge, configure, boot kernel 2.6.14-gentoo-r4
2. emerge alsa-driver-1.0.10 (tested ~amd64, upstream has reports for x86 and
ppc also)
3. modprobe snd_mpu401
Actual Results:
Dec 10 16:48:34 ale Unable to handle kernel NULL pointer dereference at
0000000000000000 RIP:
Dec 10 16:48:34 ale [<0000000000000000>]
Dec 10 16:48:34 ale PGD 7e9c1067 PUD 7eb49067 PMD 0
Dec 10 16:48:34 ale Oops: 0010 [1]
Dec 10 16:48:34 ale CPU 0
Dec 10 16:48:34 ale Modules linked in: snd_mpu401 nvidia snd_bt87x
snd_ac97_codec snd_ac97_bus snd_pcm snd_timer
snd_page_alloc snd_mpu401_uart snd_rawmidi snd_seq_device snd
Dec 10 16:48:34 ale Pid: 2839, comm: modprobe Tainted: P 2.6.14-gentoo-r4 #1
Dec 10 16:48:34 ale RIP: 0010:[<0000000000000000>] [<0000000000000000>]
Dec 10 16:48:34 ale RSP: 0018:ffff81007e3bfa90 EFLAGS: 00010286
Dec 10 16:48:34 ale RAX: ffffffff8800c328 RBX: ffff81007ed8d810 RCX:
0000000000000000
Dec 10 16:48:34 ale RDX: 0000000000000009 RSI: ffffffff88006f59 RDI:
ffff81007ed8d800
Dec 10 16:48:34 ale RBP: ffffffff8800c328 R08: 0000000000000000 R09:
ffff81007cf09420
Dec 10 16:48:34 ale R10: 000000000007a55f R11: 0000000000000000 R12:
0000000000000000
Dec 10 16:48:34 ale R13: ffff81007ed8d810 R14: 0000000000000000 R15:
0000000000000016
Dec 10 16:48:34 ale FS: 00002aaaaaefbd50(0000) GS:ffffffff80614800(0000)
knlGS:0000000000000000
Dec 10 16:48:34 ale CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Dec 10 16:48:34 ale CR2: 0000000000000000 CR3: 000000007e0be000 CR4:
00000000000006e0
Dec 10 16:48:34 ale Process modprobe (pid: 2839, threadinfo ffff81007e3be000,
task ffff81007dc254d0)
Dec 10 16:48:34 ale Stack: ffffffff80297aff 0000000000000000 ffff81007e3bfab8
ffffffff80297b70
Dec 10 16:48:34 ale ffffffff802972a6 ffffffff804c4248 ffffffff804c4248
ffffffff8800c3c0
Dec 10 16:48:34 ale ffff81007ec53d20 ffff81007ec53d20
Dec 10 16:48:34 ale Call Trace:<ffffffff80297aff>{driver_probe_device+79}
<ffffffff80297b70>{__device_attach+0}
Dec 10 16:48:34 ale <ffffffff802972a6>{bus_for_each_drv+70}
<ffffffff80297bd8>{device_attach+88}
Dec 10 16:48:34 ale <ffffffff80297325>{bus_add_device+69}
<ffffffff8029635d>{device_add+173}
Dec 10 16:48:34 ale <ffffffff8029950a>{platform_device_register+250}
<ffffffff880011b7>{:snd:snd_generic_device_r
egister+135}
Dec 10 16:48:34 ale <ffffffff88001539>{:snd:snd_card_set_generic_dev+9}
Dec 10 16:48:34 ale <ffffffff884ff178>{:snd_mpu401:snd_mpu401_create+376}
Dec 10 16:48:34 ale <ffffffff884ff302>{:snd_mpu401:snd_mpu401_pnp_probe+338}
...
Expected Results:
modprobe suceeds.
The tainting is from nvidia module, but oops also happens without.