kernel-fxtec-pro1x/arch/x86
Stuart Bennett d0fc63f7bd x86 mmiotrace: fix remove_kmmio_fault_pages()
Impact: fix race+crash in mmiotrace

The list manipulation in remove_kmmio_fault_pages() was broken. If more
than one consecutive kmmio_fault_page was re-added during the grace
period between unregister_kmmio_probe() and remove_kmmio_fault_pages(),
the list manipulation failed to remove pages from the release list.

After a second grace period the pages get into rcu_free_kmmio_fault_pages()
and raise a BUG_ON() kernel crash.

The list manipulation is fixed to properly remove pages from the release
list.

This bug has been present from the very beginning of mmiotrace in the
mainline kernel. It was introduced in 0fd0e3da ("x86: mmiotrace full
patch, preview 1");

An urgent fix for Linus. Tested by Stuart (on 32-bit) and Pekka
(on amd and intel 64-bit systems, nouveau and nvidia proprietary).

Signed-off-by: Stuart Bennett <stuart@freedesktop.org>
Signed-off-by: Pekka Paalanen <pq@iki.fi>
LKML-Reference: <20090308202135.34933feb@daedalus.pq.iki.fi>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-03-08 19:51:23 +01:00
..
boot x86 setup: fix asm constraints in vesa_store_edid 2009-01-30 23:55:25 +01:00
configs eeprom: More consistent symbol names 2009-01-26 21:19:57 +01:00
crypto crypto: crc32c-intel - Switch to shash 2008-12-25 11:01:37 +11:00
ia32 x86-64: fix int $0x80 -ENOSYS return 2009-02-06 18:22:29 -08:00
include/asm x86, math-emu: fix init_fpu for task != current 2009-03-04 20:33:16 +01:00
kernel x86, pebs: correct qualifier passed to ds_write_config() from ds_request_pebs() 2009-03-06 16:13:15 +01:00
kvm KVM: VMX: Flush volatile msrs before emulating rdmsr 2009-02-15 02:47:39 +02:00
lguest lguest: typos fix 2009-01-30 11:34:10 +10:30
lib x86: use early clobbers in usercopy*.c 2009-01-21 09:43:17 +01:00
mach-default x86: Add IRQF_TIMER to legacy x86 timer interrupt descriptors 2009-02-22 10:27:49 -08:00
mach-generic x86: rename all fields of mpc_table mpc_X to X 2009-01-05 14:08:34 +01:00
mach-rdc321x
mach-voyager x86, Voyager: fix compile by lifting the degeneracy of phys_cpu_present_map 2009-02-24 12:50:11 -08:00
math-emu x86, math-emu: fix init_fpu for task != current 2009-03-04 20:33:16 +01:00
mm x86 mmiotrace: fix remove_kmmio_fault_pages() 2009-03-08 19:51:23 +01:00
oprofile x86: oprofile: don't set counter width from cpuid on Core2 2009-03-03 12:04:22 +01:00
pci PCI: irq and pci_ids patch for Intel Tigerpoint DeviceIDs 2009-01-27 09:46:08 -08:00
power x86, hibernate: fix breakage on x86_32 with CONFIG_NUMA set 2008-11-12 23:28:51 +01:00
vdso Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2008-12-28 12:33:21 -08:00
video
xen xen: disable interrupts early, as start_kernel expects 2009-02-25 18:51:57 +01:00
Kconfig x86: enable DMAR by default 2009-02-26 20:59:47 +01:00
Kconfig.cpu x86/Kconfig.cpu: make Kconfig help readable in the console 2009-02-04 22:19:27 +01:00
Kconfig.debug trace: mmiotrace to the tracer menu in Kconfig 2009-02-15 20:03:28 +01:00
Makefile x86, um: ... and asm-x86 move 2008-10-22 22:55:20 -07:00
Makefile_32.cpu