linux-stable/arch/arm
Mika Westerberg 4e54d93d3c ARM: 6464/2: fix spinlock recursion in adjust_pte()
When running following code in a machine which has VIVT caches and
USE_SPLIT_PTLOCKS is not defined:

  fd = open("/etc/passwd", O_RDONLY);
  addr = mmap(NULL, 4096, PROT_READ, MAP_SHARED, fd, 0);
  addr2 = mmap(NULL, 4096, PROT_READ, MAP_SHARED, fd, 0);

  v = *((int *)addr);

we will hang in spinlock recursion in the page fault handler:

  BUG: spinlock recursion on CPU#0, mmap_test/717
  lock: c5e295d8, .magic: dead4ead, .owner: mmap_test/717,
                  .owner_cpu: 0
  [<c0026604>] (unwind_backtrace+0x0/0xec)
  [<c014ee48>] (do_raw_spin_lock+0x40/0x140)
  [<c0027f68>] (update_mmu_cache+0x208/0x250)
  [<c0079db4>] (__do_fault+0x320/0x3ec)
  [<c007af7c>] (handle_mm_fault+0x2f0/0x6d8)
  [<c0027834>] (do_page_fault+0xdc/0x1cc)
  [<c00202d0>] (do_DataAbort+0x34/0x94)

This comes from the fact that when USE_SPLIT_PTLOCKS is not defined,
the only lock protecting the page tables is mm->page_table_lock
which is already locked before update_mmu_cache() is called.

Signed-off-by: Mika Westerberg <mika.westerberg@iki.fi>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2010-10-28 13:53:47 +01:00
..
boot ARM: Fix build error when using KCONFIG_CONFIG 2010-09-19 16:18:37 +01:00
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 ARM: fix memblock breakage 2010-10-27 21:41:39 +01:00
kernel ARM: 6465/1: Fix data abort accessing proc_info from __lookup_processor_type 2010-10-27 21:40:29 +01:00
lib Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-08-03 14:31:24 -07:00
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: 6460/1: ixp2000: fix type of ixp2000_timer_interrupt 2010-10-27 21:40:28 +01: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 ARM: 6449/1: Fix for compiler warning of uninitialized variable. 2010-10-27 21:40:28 +01: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 ARM: AMBA: Add pclk definition for platforms using primecells 2010-07-22 09:55:38 +01:00
mach-spear6xx ARM: AMBA: Add pclk definition for platforms using primecells 2010-07-22 09:55:38 +01:00
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 ARM: 6464/2: fix spinlock recursion in adjust_pte() 2010-10-28 13:53:47 +01: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 Merge branch 'misc' into devel 2010-07-31 14:20:02 +01:00
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 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2010-08-07 17:07:31 -07:00
plat-pxa ARM: pxa27x_keypad: added wakeup event handler for keypad interrupts 2010-10-09 17:07:19 +08:00
plat-s3c24xx ARM: S3C24XX: I2S multi-component-related fixes 2010-08-31 13:25:17 +01:00
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 ARM: 6264/1: fix Versatile Express LED oversight 2010-07-26 10:48:34 +01:00
tools ARM: Update mach-types 2010-09-09 22:49:26 +01:00
vfp ARM: 6203/1: Make VFPv3 usable on ARMv6 2010-07-09 14:41:34 +01:00
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