Ralf Hildebrandt <[email protected]> wrote:
>
> * Linus Torvalds <[email protected]>:
> >
> > Ok,
> > it's two weeks since 2.6.16, and the merge window is closed.
>
> loading an unloading the powernow-k8 modules causes an EIP:
>
> % modprobe powernow_k8
>
> > Apr 3 19:52:32 knarzkiste kernel: powernow-k8: Found 1 AMD Athlon 64 / Opteron processors (version 1.60.1)
> > Apr 3 19:52:32 knarzkiste kernel: powernow-k8: 0 : fid 0x0 (800 MHz), vid 0x12 (1100 mV)
> > Apr 3 19:52:32 knarzkiste kernel: powernow-k8: 1 : fid 0x8 (1600 MHz), vid 0x4 (1450 mV)
> > Apr 3 19:52:32 knarzkiste kernel: cpu_init done, current fid 0x8, vid 0x2
> > Apr 3 19:52:32 knarzkiste kernel: powernow-k8: ph2 null fid transition 0x8
>
> % rmmod powernow_k8
>
> > Apr 3 19:52:58 knarzkiste kernel: BUG: unable to handle kernel NULL pointer dereference at virtual address 0000002c
> > Apr 3 19:52:58 knarzkiste kernel: printing eip:
> > Apr 3 19:52:58 knarzkiste kernel: ded6db09
> > Apr 3 19:52:58 knarzkiste kernel: *pde = 00000000
> > Apr 3 19:52:58 knarzkiste kernel: Oops: 0000 [#1]
> > Apr 3 19:52:58 knarzkiste kernel: PREEMPT
> > Apr 3 19:52:58 knarzkiste kernel: Modules linked in: powernow_k8 freq_table thermal fan button processor ac battery af_packet ide_scsi sata_sil libata scsi_mod eeprom saa7134_dvb mt352 saa7134 compat_ioctl32 v4l2_common v4l1_compat ir_kbd_i2c ir_common videodev video_buf_dvb dvb_core video_buf nxt200x dvb_pll tda1004x usbhid usbmouse pcmcia firmware_class tsdev 8250_pci 8250 serial_core 8139too evdev psmouse yenta_socket rsrc_nonstatic pcmcia_core ehci_hcd ohci_hcd snd_atiixp_modem snd_atiixp usbcore ide_cd snd_ac97_codec snd_ac97_bus ati_agp agpgart snd_pcm snd_timer snd soundcore snd_page_alloc cdrom unix
> > Apr 3 19:52:58 knarzkiste kernel: CPU: 0
> > Apr 3 19:52:58 knarzkiste kernel: EIP: 0060:[pg0+513383177/1069720576] Not tainted VLI
> > Apr 3 19:52:58 knarzkiste kernel: EFLAGS: 00010286 (2.6.17-rc1 #1)
> > Apr 3 19:52:58 knarzkiste kernel: EIP is at acpi_processor_unregister_performance+0x1e/0x3e [processor]
> > Apr 3 19:52:58 knarzkiste kernel: eax: 00000000 ebx: dd1f5000 ecx: 00000001 edx: 00000000
> > Apr 3 19:52:58 knarzkiste kernel: esi: dca68980 edi: 00000286 ebp: dca68a0c esp: dd002f1c
> > Apr 3 19:52:58 knarzkiste kernel: ds: 007b es: 007b ss: 0068
> > Apr 3 19:52:58 knarzkiste kernel: Process rmmod (pid: 4806, threadinfo=dd002000 task=ddd6f070)
> > Apr 3 19:52:58 knarzkiste kernel: Stack: <0>dc1d1640 ded684d6 dca68980 dca689a8 c0296582 c03adf88 c034ca50 c0349d9c
> > Apr 3 19:52:58 knarzkiste kernel: c0349d80 c0274eb7 00000880 ded6a100 00000000 dd002000 c02953f5 c0136706
> > Apr 3 19:52:58 knarzkiste kernel: 65776f70 776f6e72 00386b5f da8999bc c0149d89 b7fa0000 dd62bac0 c014b198
> > Apr 3 19:52:58 knarzkiste kernel: Call Trace:
> > Apr 3 19:52:58 knarzkiste kernel: <ded684d6> powernowk8_cpu_exit+0x26/0x50 [powernow_k8] <c0296582> cpufreq_remove_dev+0xb2/0x120
> > Apr 3 19:52:58 knarzkiste kernel: <c0274eb7> sysdev_driver_unregister+0x67/0x80 <c02953f5> cpufreq_unregister_driver+0x25/0x60
> > Apr 3 19:52:58 knarzkiste kernel: <c0136706> sys_delete_module+0x146/0x1c0 <c0149d89> remove_vma+0x39/0x50
> > Apr 3 19:52:58 knarzkiste kernel: <c014b198> do_munmap+0x198/0x1f0 <c0102e93> sysenter_past_esp+0x54/0x75
> > Apr 3 19:52:58 knarzkiste kernel: Code: 01 00 00 31 c0 83 c4 2c 5b 5e 5f 5d c3 53 ff 0d e0 00 d7 de 0f 88 f8 01 00 00 8b 1c 95 8c 02 d7 de 85 db 74 18 8b 83 6c 02 00 00 <8b> 40 2c e8 ff 83 3e e1 c7 83 6c 02 00 00 00 00 00 00 ff 05 e0
>
In acpi_processor_unregister_performance(), pr->performance is NULL.
Can you add the below? It should tell us who forgot to register the
performance data, as well as working around the crash.
diff -puN drivers/acpi/processor_perflib.c~a drivers/acpi/processor_perflib.c
--- devel/drivers/acpi/processor_perflib.c~a 2006-04-03 20:23:55.000000000 -0700
+++ devel-akpm/drivers/acpi/processor_perflib.c 2006-04-03 20:24:46.000000000 -0700
@@ -577,6 +577,8 @@ acpi_processor_register_performance(stru
return_VALUE(-EBUSY);
}
+ WARN_ON(!performance);
+
pr->performance = performance;
if (acpi_processor_get_performance_info(pr)) {
@@ -609,7 +611,8 @@ acpi_processor_unregister_performance(st
return_VOID;
}
- kfree(pr->performance->states);
+ if (pr->performance)
+ kfree(pr->performance->states);
pr->performance = NULL;
acpi_cpufreq_remove_file(pr);
_
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]