kernel-fxtec-pro1x/arch/arm/mm
Nicolas Pitre 2f27bf834e ARM: 6401/1: plug a race in the alignment trap handler
When the policy for user space is to ignore misaligned accesses from user
space, the processor then performs a documented rotation on the accessed
data.  This is the result of the access being trapped, and the kernel
disabling the alignment trap before returning to user space again.

In kernel space we always want misaligned accesses to be fixed up.  This
is enforced by always re-enabling the alignment trap on every entry into
kernel space from user space.  No such re-enabling is performed when an
exception occurs while already in kernel space as the alignment trap is
always supposed to be enabled in that case.

There is however a small race window when a misaligned access in user
space is trapped and the alignment trap disabled, but the CPU didn't
return to user space just yet.  Any exception would be entered from kernel
space at that point and the kernel would then execute with the alignment
trap disabled.

Thanks to Maxime Bizon <mbizon@freebox.fr> for providing a test module
that made this issue reproducible.

Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2010-09-23 15:17:04 +01:00
..
abort-ev4.S
abort-ev4t.S
abort-ev5t.S
abort-ev5tj.S
abort-ev6.S
abort-ev7.S arm: mm: qsd8x50: Fix incorrect permission faults 2010-05-03 11:15:05 -07:00
abort-lv4t.S
abort-macro.S
abort-nommu.S
alignment.c ARM: 6401/1: plug a race in the alignment trap handler 2010-09-23 15:17:04 +01:00
cache-fa.S
cache-feroceon-l2.c
cache-l2x0.c ARM: 6272/1: Convert L2x0 to use the IO relaxed operations 2010-07-29 14:04:36 +01:00
cache-tauros2.c
cache-v3.S
cache-v4.S
cache-v4wb.S
cache-v4wt.S
cache-v6.S ARM: 6188/1: Add a config option for the ARM11MPCore DMA cache maintenance workaround 2010-07-01 10:12:31 +01:00
cache-v7.S ARM: 6139/1: ARMv7: Use the Inner Shareable I-cache on MP 2010-05-20 23:52:38 +01:00
cache-xsc3l2.c
context.c
copypage-fa.c ARM: Gemini: fix compiler error in copypage-fa.c 2010-04-27 12:45:10 +02:00
copypage-feroceon.c ARM: 6164/1: Add kto and kfrom to input operands list. 2010-06-08 19:42:18 +01:00
copypage-v3.c
copypage-v4mc.c
copypage-v4wb.c ARM: 6164/1: Add kto and kfrom to input operands list. 2010-06-08 19:42:18 +01:00
copypage-v4wt.c ARM: 6164/1: Add kto and kfrom to input operands list. 2010-06-08 19:42:18 +01:00
copypage-v6.c ARM: 6007/1: fix highmem with VIPT cache and DMA 2010-04-14 11:11:27 +01:00
copypage-xsc3.c ARM: 6164/1: Add kto and kfrom to input operands list. 2010-06-08 19:42:18 +01:00
copypage-xscale.c
dma-mapping.c ARM: Ensure PTE modifications via dma_alloc_coherent are visible 2010-09-08 16:27:56 +01:00
extable.c
fault-armv.c Merge branch 'devel-stable' into devel 2010-05-17 17:24:04 +01:00
fault.c ARM: 6268/1: ARMv6K and ARMv7 use fault statuses 3 and 6 as Access Flag fault 2010-07-27 10:48:41 +01:00
fault.h
flush.c ARM: 6007/1: fix highmem with VIPT cache and DMA 2010-04-14 11:11:27 +01:00
highmem.c kmap_atomic: make kunmap_atomic() harder to misuse 2010-08-09 20:44:54 -07:00
init.c Merge branch 'devel-stable' into devel 2010-07-31 14:20:16 +01:00
iomap.c
ioremap.c ARM: use generic ioremap_page_range() 2010-07-27 10:43:47 +01:00
Kconfig ARM: 6344/1: Mark CPU_32v6K as depended on CPU_V7 2010-09-02 15:32:13 +01:00
Makefile ARM: Remove DISCONTIGMEM support 2010-07-16 10:57:35 +01:00
mm.h ARM: Convert platform reservations to use LMB rather than bootmem 2010-07-27 08:48:23 +01:00
mmap.c [ARM] add address randomization to mmap() 2010-06-14 21:22:11 -04:00
mmu.c ARM: 6383/1: Implement phys_mem_access_prot() to avoid attributes aliasing 2010-09-19 12:19:18 +01:00
nommu.c ARM: Convert platform reservations to use LMB rather than bootmem 2010-07-27 08:48:23 +01:00
pabort-legacy.S
pabort-v6.S
pabort-v7.S
pgd.c
proc-arm6_7.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm7tdmi.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm9tdmi.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm720.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm740.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm920.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm922.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm925.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm926.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm940.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm946.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm1020.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm1020e.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm1022.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-arm1026.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-fa526.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-feroceon.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-macros.S
proc-mohawk.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-sa110.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-sa1100.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-syms.c
proc-v6.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-v7.S ARM: 6398/1: add proc info for ARM11MPCore/Cortex-A9 from ARM 2010-09-17 16:44:24 +01:00
proc-xsc3.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
proc-xscale.S ARM: Factor out common code from cpu_proc_fin() 2010-07-27 10:48:42 +01:00
tlb-fa.S
tlb-v3.S
tlb-v4.S
tlb-v4wb.S
tlb-v4wbi.S
tlb-v6.S
tlb-v7.S ARM: 6112/1: Use the Inner Shareable I-cache and BTB ops on ARMv7 SMP 2010-05-08 10:44:30 +01:00
vmregion.c ARM: DMA coherent allocator: align remapped addresses 2010-07-27 10:43:48 +01:00
vmregion.h ARM: DMA coherent allocator: align remapped addresses 2010-07-27 10:43:48 +01:00