1
linux/arch/sparc/mm
Peter Zijlstra 20273941f2 mm: fix race in kunmap_atomic()
Christoph reported a nice splat which illustrated a race in the new stack
based kmap_atomic implementation.

The problem is that we pop our stack slot before we're completely done
resetting its state -- in particular clearing the PTE (sometimes that's
CONFIG_DEBUG_HIGHMEM).  If an interrupt happens before we actually clear
the PTE used for the last slot, that interrupt can reuse the slot in a
dirty state, which triggers a BUG in kmap_atomic().

Fix this by introducing kmap_atomic_idx() which reports the current slot
index without actually releasing it and use that to find the PTE and delay
the _pop() until after we're completely done.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Reported-by: Christoph Hellwig <hch@infradead.org>
Acked-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-10-27 18:03:05 -07:00
..
btfixup.c
extable.c
fault_32.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 2010-03-02 07:56:44 -08:00
fault_64.c sparc: Support show_unhandled_signals. 2010-03-01 00:02:23 -08:00
generic_32.c
generic_64.c
highmem.c mm: fix race in kunmap_atomic() 2010-10-27 18:03:05 -07:00
hugetlbpage.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
hypersparc.S
init_32.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
init_64.c Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-10-25 08:19:14 -07:00
init_64.h sparc64: Fix definition of VMEMMAP_SIZE. 2009-11-23 16:38:56 -08:00
io-unit.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
iommu.c Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-08-05 15:57:35 -07:00
leon_mm.c
loadmmu.c
Makefile
nosun4c.c MM: Pass a PTE pointer to update_mmu_cache() rather than the PTE itself 2010-02-20 16:41:46 +00:00
srmmu.c of/sparc: convert various prom_* functions to use phandle 2010-10-09 02:33:34 -06:00
sun4c.c of/sparc: convert various prom_* functions to use phandle 2010-10-09 02:33:34 -06:00
swift.S
tlb.c
tsb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
tsunami.S
ultra.S
viking.S