WSL2-Linux-Kernel/arch/arm
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
..
boot
common Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
configs AT91: add board support for Pcontrol_G20 2010-10-26 11:32:47 +02:00
include/asm mm: remove pte_*map_nested() 2010-10-26 16:52:08 -07:00
kernel Merge branch 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl 2010-10-22 10:52:56 -07:00
lib
mach-aaec2000 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-at91 at91/atmel-mci: inclusion of sd/mmc driver in at91sam9g45 chip and board 2010-10-26 11:32:49 +02:00
mach-bcmring Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-10-21 16:42:32 -07:00
mach-clps711x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-cns3xxx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-davinci Merge branch 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci 2010-10-25 10:59:31 -07:00
mach-dove arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ebsa110 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ep93xx replace nested max/min macros with {max,min}3 macro 2010-10-26 16:52:12 -07:00
mach-footbridge arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-gemini arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-h720x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-imx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-integrator arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-iop13xx Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-10-21 16:42:32 -07:00
mach-iop32x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-iop33x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ixp4xx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ixp23xx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ixp2000 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-kirkwood Kirkwood: add fan support for Network Space Max v2 2010-10-25 14:11:37 -07:00
mach-ks8695 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-l7200/include/mach arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
mach-lh7a40x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-loki arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-lpc32xx Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-10-21 16:42:32 -07:00
mach-mmp arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-msm Merge branch 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl 2010-10-22 10:52:56 -07:00
mach-mv78xx0 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-mx3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 2010-10-22 20:30:48 -07:00
mach-mx5 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-mx25 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-mxc91231 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-netx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-nomadik arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-ns9xxx arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
mach-nuc93x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-omap1 Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2010-10-25 13:46:56 -07:00
mach-omap2 Merge git://git.infradead.org/battery-2.6 2010-10-26 10:14:23 -07:00
mach-orion5x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-pnx4008 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-pxa Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2010-10-25 08:32:05 -07:00
mach-realview arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-rpc arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-s3c24a0/include/mach arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
mach-s3c64xx Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2010-10-25 08:32:05 -07:00
mach-s3c2400
mach-s3c2410 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-s3c2412 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-s3c2416 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-s3c2440 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
mach-s3c2443 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-s5p64x0 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-s5p6442 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-s5pc100 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-s5pv210 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-s5pv310 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-sa1100 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
mach-shark arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-shmobile arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-spear3xx
mach-spear6xx
mach-stmp37xx arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-stmp378x arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-tcc8k arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-tegra tegra: harmony: enable PCI Express 2010-10-21 18:13:10 -07:00
mach-u300 Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-10-21 16:42:32 -07:00
mach-ux500 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2010-10-25 07:59:01 -07:00
mach-versatile arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-vexpress arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mach-w90x900 arm: remove machine_desc.io_pg_offst and .phys_io 2010-10-20 00:27:46 -04:00
mm mm: fix race in kunmap_atomic() 2010-10-27 18:03:05 -07:00
nwfpe Update broken web addresses in arch directory. 2010-10-18 11:03:21 +02:00
oprofile oprofile: Abstract the perf-events backend 2010-10-11 17:46:16 +02:00
plat-iop
plat-mxc Merge branch 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl 2010-10-22 10:52:56 -07:00
plat-nomadik Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2010-10-25 07:59:01 -07:00
plat-omap Merge branch 'for-linus' of git://gitorious.org/linux-omap-dss2/linux 2010-10-26 10:02:39 -07:00
plat-orion
plat-pxa ARM: pxa27x_keypad: added wakeup event handler for keypad interrupts 2010-10-09 17:07:19 +08:00
plat-s3c24xx
plat-s5p ARM: S5P64X0: Add UART serial support for S5P6450 2010-10-18 18:33:04 +09:00
plat-samsung Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2010-10-25 08:32:05 -07:00
plat-spear arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
plat-stmp3xxx arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
plat-tcc arm: return both physical and virtual addresses from addruart 2010-10-20 00:27:33 -04:00
plat-versatile
tools
vfp
Kconfig Merge branch 'for-next' of git://android.git.kernel.org/kernel/tegra 2010-10-25 18:42:06 -07:00
Kconfig-nommu
Kconfig.debug Merge branch 'devel-stable' into devel 2010-10-19 22:06:36 +01:00
Makefile Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-10-19 20:12:24 +01:00