kernel-fxtec-pro1x/arch/arm
Ian Campbell a7892f32cc arm: xen: foreign mapping PTEs are special.
These mappings are in fact special and require special handling in privcmd,
which already exists. Failure to mark the PTE as special on arm64 causes all
sorts of bad PTE fun. e.g.

e.g.:

BUG: Bad page map in process xl  pte:e0004077b33f53 pmd:4079575003
page:ffffffbce1a2f328 count:1 mapcount:-1 mapping:          (null) index:0x0
page flags: 0x4000000000000014(referenced|dirty)
addr:0000007fb5259000 vm_flags:040644fa anon_vma:          (null) mapping:ffffffc03a6fda58 index:0
vma->vm_ops->fault: privcmd_fault+0x0/0x38
vma->vm_file->f_op->mmap: privcmd_mmap+0x0/0x2c
CPU: 0 PID: 2657 Comm: xl Not tainted 3.12.0+ #102
Call trace:
[<ffffffc0000880f8>] dump_backtrace+0x0/0x12c
[<ffffffc000088238>] show_stack+0x14/0x1c
[<ffffffc0004b67e0>] dump_stack+0x70/0x90
[<ffffffc000125690>] print_bad_pte+0x12c/0x1bc
[<ffffffc0001268f4>] unmap_single_vma+0x4cc/0x700
[<ffffffc0001273b4>] unmap_vmas+0x68/0xb4
[<ffffffc00012c050>] unmap_region+0xcc/0x1d4
[<ffffffc00012df20>] do_munmap+0x218/0x314
[<ffffffc00012e060>] vm_munmap+0x44/0x64
[<ffffffc00012ed78>] SyS_munmap+0x24/0x34

Where unmap_single_vma contains inlined -> unmap_page_range -> zap_pud_range
-> zap_pmd_range -> zap_pte_range -> print_bad_pte.

Or:

BUG: Bad page state in process xl  pfn:4077b4d
page:ffffffbce1a2f8d8 count:0 mapcount:-1 mapping:          (null) index:0x0
page flags: 0x4000000000000014(referenced|dirty)
Modules linked in:
CPU: 0 PID: 2657 Comm: xl Tainted: G    B        3.12.0+ #102
Call trace:
[<ffffffc0000880f8>] dump_backtrace+0x0/0x12c
[<ffffffc000088238>] show_stack+0x14/0x1c
[<ffffffc0004b67e0>] dump_stack+0x70/0x90
[<ffffffc00010f798>] bad_page+0xc4/0x110
[<ffffffc00010f8b4>] free_pages_prepare+0xd0/0xd8
[<ffffffc000110e94>] free_hot_cold_page+0x28/0x178
[<ffffffc000111460>] free_hot_cold_page_list+0x38/0x60
[<ffffffc000114cf0>] release_pages+0x190/0x1dc
[<ffffffc00012c0e0>] unmap_region+0x15c/0x1d4
[<ffffffc00012df20>] do_munmap+0x218/0x314
[<ffffffc00012e060>] vm_munmap+0x44/0x64
[<ffffffc00012ed78>] SyS_munmap+0x24/0x34

x86 already gets this correct. 32-bit arm gets away with this because there is
not PTE_SPECIAL bit in the PTE there and the vm_normal_page fallback path does
the right thing.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2013-12-11 17:06:05 +00:00
..
boot ARM: SoC fixes for 3.12-rc 2013-10-13 09:59:10 -07:00
common ARM: edma: Fix clearing of unused list for DT DMA resources 2013-09-30 09:30:13 -07:00
configs ARM: multi_v7_defconfig: add SDHCI for i.MX 2013-10-02 20:54:36 -07:00
crypto ARM: 7837/3: fix Thumb-2 bug in AES assembler code 2013-09-22 11:43:38 +01:00
include xen/arm: pfn_to_mfn and mfn_to_pfn return the argument if nothing is in the p2m 2013-11-11 12:48:58 -05:00
kernel Merge branches 'sched-urgent-for-linus', 'timers-urgent-for-linus' and 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-09-28 14:22:17 -07:00
kvm ARM: kvm: rename cpu_reset to avoid name clash 2013-09-24 11:15:05 -07:00
lib ARM: 7835/2: fix modular build of xor_blocks() with NEON enabled 2013-09-09 15:24:47 +01:00
mach-at91 ARM: at91: sam9g45: shutdown ddr1 too when rebooting 2013-09-30 09:58:44 -07:00
mach-bcm
mach-bcm2835
mach-clps711x
mach-cns3xxx
mach-davinci ARM: davinci: dm365 evm: fix unused variable warning 2013-09-19 14:56:03 +05:30
mach-dove ARM: SoC board updates for 3.12 2013-09-06 13:34:43 -07:00
mach-ebsa110
mach-ep93xx ARM: SoC fixes for 3.12 2013-09-12 13:59:31 -07:00
mach-exynos ARM: SoC late changes for v3.12 2013-09-09 16:35:29 -07:00
mach-footbridge
mach-gemini
mach-highbank ARM: SoC late changes for v3.12 2013-09-09 16:35:29 -07:00
mach-imx ACPI and power management fixes for 3.12-rc2 2013-09-20 15:17:14 -07:00
mach-integrator ARM: mach-integrator: Add stub for pci_v3_early_init() for !CONFIG_PCI 2013-09-25 21:59:52 -07:00
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone
mach-kirkwood ARM: SoC board updates for 3.12 2013-09-06 13:34:43 -07:00
mach-ks8695
mach-lpc32xx
mach-mmp ARM: SoC late changes for v3.12 2013-09-09 16:35:29 -07:00
mach-msm
mach-mv78xx0 ARM: SoC platform changes for 3.12 2013-09-06 13:30:06 -07:00
mach-mvebu ARM: mvebu: add missing of_node_put() to fix reference leak 2013-09-18 16:40:53 +00:00
mach-mxs
mach-netx
mach-nomadik
mach-nspire
mach-omap1
mach-omap2 ARM: OMAP2: RX-51: Add missing max_current to rx51_lp5523_led_config 2013-10-08 11:22:43 -07:00
mach-orion5x ARM: SoC board updates for 3.12 2013-09-06 13:34:43 -07:00
mach-picoxcell
mach-prima2 ARM: SoC platform changes for 3.12 2013-09-06 13:30:06 -07:00
mach-pxa
mach-realview
mach-rockchip
mach-rpc
mach-s3c24xx
mach-s3c64xx
mach-s5p64x0
mach-s5pc100
mach-s5pv210
mach-sa1100 ARM: sa1100: collie.c: fall back to jedec_probe flash detection 2013-09-18 08:20:27 -07:00
mach-shark
mach-shmobile ARM: SoC fixes for 3.12-rc 2013-10-02 21:48:32 -07:00
mach-socfpga
mach-spear
mach-sti
mach-sunxi
mach-tegra ARM: SoC platform changes for 3.12 2013-09-06 13:30:06 -07:00
mach-u300 ARM: u300: hide submenus 2013-09-18 08:16:46 -07:00
mach-ux500 ARM: ux500: disable outer cache debug 2013-09-17 09:08:13 -07:00
mach-versatile Merge branch 'versatile/fixes' into fixes 2013-09-09 17:31:04 -07:00
mach-vexpress ARM: vexpress: tc2: fix hotplug/idle/kexec race on cluster power down 2013-09-30 09:27:36 -07:00
mach-virt
mach-vt8500
mach-w90x900
mach-zynq
mm arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
net
nwfpe
oprofile
plat-iop
plat-omap ARM: SoC platform changes for 3.12 2013-09-06 13:30:06 -07:00
plat-orion
plat-pxa ARM: pxa: ssp: Check return values from phandle lookups 2013-09-09 17:14:09 -07:00
plat-samsung
plat-versatile
tools
vfp
xen arm: xen: foreign mapping PTEs are special. 2013-12-11 17:06:05 +00:00
Kconfig Linux 3.12-rc5 2013-11-08 15:28:05 -05:00
Kconfig-nommu
Kconfig.debug
Makefile arm, kbuild: make "make install" not depend on vmlinux 2013-10-02 22:30:35 +02:00