android_kernel_xiaomi_sm8350/arch/x86/mm
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
..
dump_pagetables.c
extable.c
fault.c prevent kprobes from catching spurious page faults 2009-02-05 17:01:50 -08:00
gup.c x86: two trivial sparse annotations 2008-10-29 08:02:28 +01:00
highmem_32.c Export kmap_atomic_pfn for DRM-GEM. 2008-10-18 07:10:12 +10:00
hugetlbpage.c
init_32.c x86: fix assumed to be contiguous leaf page tables for kmap_atomic region (take 2) 2009-01-16 13:47:04 +01:00
init_64.c x86: fix init_memory_mapping() to handle small ranges 2009-03-03 08:50:22 +01:00
iomap_32.c x86: i915 needs pgprot_writecombine() and is_io_mapping_possible() 2009-02-28 14:22:44 +01:00
ioremap.c x86, pat: fix warn_on_once() while mapping 0-1MB range with /dev/mem 2009-02-12 08:27:27 +01:00
k8topology_64.c x86: k8 numa register active regions later 2009-01-06 13:21:21 +01:00
kmmio.c x86 mmiotrace: fix remove_kmmio_fault_pages() 2009-03-08 19:51:23 +01:00
Makefile Merge branches 'tracing/ftrace', 'tracing/fastboot', 'tracing/nmisafe' and 'tracing/urgent' into tracing/core 2008-11-08 09:34:35 +01:00
memtest.c x86: memtest fix use of reserve_early() 2008-10-22 17:08:06 +02:00
mmap.c
mmio-mod.c mmiotrace: remove left-over marker cruft 2008-10-14 10:37:17 +02:00
numa_32.c trivial: replace last usages of __FUNCTION__ in kernel 2009-01-07 15:48:54 -08:00
numa_64.c mm: clean up for early_pfn_to_nid() 2009-02-18 15:37:55 -08:00
pageattr-test.c
pageattr.c x86: use the right protections for split-up pagetables 2009-02-20 08:35:03 +01:00
pat.c x86: i915 needs pgprot_writecombine() and is_io_mapping_possible() 2009-02-28 14:22:44 +01:00
pf_in.c x86: fix mmiotrace 8-bit register decoding 2008-10-14 10:33:50 +02:00
pf_in.h
pgtable_32.c
pgtable.c
srat_32.c
srat_64.c x86: prepare for cpumask iterators to only go to nr_cpu_ids 2008-12-16 17:40:58 -08:00
testmmiotrace.c x86: add far read test to testmmiotrace 2009-03-02 10:20:35 +01:00