linux/arch/arm
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
..
boot ARM: Fix build error when using KCONFIG_CONFIG 2010-09-19 16:18:37 +01:00
common Revert "[ARM] pxa: remove now unnecessary dma_needs_bounce()" 2010-09-08 12:28:39 +01:00
configs omap: Fix omap_4430sdp_defconfig for make oldconfig 2010-08-16 09:22:04 +03:00
include/asm ARM: 6383/1: Implement phys_mem_access_prot() to avoid attributes aliasing 2010-09-19 12:19:18 +01:00
kernel ARM: prevent multiple syscall restarts 2010-09-17 14:56:16 +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 DISCONTIGMEM support 2010-07-16 10:57:35 +01:00
mach-at91 ARM: 6406/1: at91sam9g45: fix i2c bus speed 2010-09-23 15:08:48 +01:00
mach-bcmring ARM: AMBA: Add pclk definition for platforms using primecells 2010-07-22 09:55:38 +01:00
mach-clps711x ARM: 6283/1: Remove useless PCIO_BASE definitions 2010-08-05 10:35:49 +01:00
mach-cns3xxx ARM: cns3xxx: Add support for AHCI controllers 2010-06-08 17:37:09 +04:00
mach-davinci Merge branch 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci 2010-08-08 10:00:55 -07:00
mach-dove ARM: dove: fix __io() definition to use bus based offset 2010-09-19 22:43:42 -04:00
mach-ebsa110
mach-ep93xx ARM: 6359/1: ep93xx: move clock initialization earlier 2010-09-08 12:28:39 +01:00
mach-footbridge ARM: 6233/1: Delete a wrong redundant right parenthesis 2010-07-22 09:20:50 +01:00
mach-gemini
mach-h720x ARM: 6283/1: Remove useless PCIO_BASE definitions 2010-08-05 10:35:49 +01:00
mach-imx ARM: imx: fix build failure concerning otg/ulpi 2010-08-23 20:50:17 -07:00
mach-integrator ARM: 6283/1: Remove useless PCIO_BASE definitions 2010-08-05 10:35:49 +01:00
mach-iop13xx Merge branch 'misc' into devel 2010-07-31 14:20:02 +01:00
mach-iop32x
mach-iop33x
mach-ixp4xx Merge git://git.infradead.org/mtd-2.6 2010-08-15 17:32:47 -07:00
mach-ixp23xx ARM: 6283/1: Remove useless PCIO_BASE definitions 2010-08-05 10:35:49 +01:00
mach-ixp2000 ARM: 6269/1: Add 'code' parameter for hook_fault_code() 2010-07-27 10:48:34 +01:00
mach-kirkwood ARM: kirkwood: Unbreak PCIe I/O port 2010-09-19 22:43:25 -04:00
mach-ks8695 ARM: 6269/1: Add 'code' parameter for hook_fault_code() 2010-07-27 10:48:34 +01:00
mach-lh7a40x ARM: Remove DISCONTIGMEM support 2010-07-16 10:57:35 +01:00
mach-loki
mach-lpc32xx ARM: LPC32XX: Arch config menu supoport and makefiles 2010-07-27 08:46:22 -07:00
mach-mmp [ARM] mmp: move declarations into SoC specific header file from common.h 2010-08-05 14:34:46 +08:00
mach-msm Merge branch 'msm-core' of git://codeaurora.org/quic/kernel/dwalker/linux-msm 2010-08-12 10:07:32 -07:00
mach-mv78xx0
mach-mx3 Merge branch 'imx-for-2.6.36' of git://git.pengutronix.de/git/imx/linux-2.6 2010-09-01 10:08:50 +01:00
mach-mx5 mx5/clock: fix clear bit fields issue in _clk_ccgr_disable function 2010-08-21 12:22:43 +02:00
mach-mx25 Merge branch 'imx-for-2.6.36' of git://git.pengutronix.de/git/imx/linux-2.6 2010-09-01 10:08:50 +01:00
mach-mxc91231 ARM: mxc91231: remove paragraphs with old address of the FSF 2010-06-30 09:00:27 +02:00
mach-netx
mach-nomadik ARM: AMBA: Add pclk definition for platforms using primecells 2010-07-22 09:55:38 +01:00
mach-ns9xxx ARM: 6263/1: ns9xxx: fix FTBFS for zImage 2010-07-26 10:33:07 +01:00
mach-nuc93x
mach-omap1 Merge branch 'v2.6.35-omap-mailbox-for-next' of git://gitorious.org/~doyu/lk/mainline into omap-for-linus 2010-08-04 16:10:38 +03:00
mach-omap2 OMAP3: PM: ensure IO wakeups are properly disabled 2010-08-16 09:22:05 +03:00
mach-orion5x ARM: Fix gen_nand probe structures contents 2010-08-12 02:21:18 +01:00
mach-pnx4008
mach-pxa ARM: pxa: fix CI_HSYNC and CI_VSYNC MFP defines for pxa300 2010-08-30 09:59:43 +08:00
mach-realview Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-08-03 14:31:24 -07:00
mach-rpc
mach-s3c24a0/include/mach
mach-s3c64xx ARM: SAMSUNG: Fix on build warning regarding VMALLOC_END type 2010-08-27 15:28:38 +09:00
mach-s3c2400
mach-s3c2410 ARM: SAMSUNG: Fix on build warning regarding VMALLOC_END type 2010-08-27 15:28:38 +09:00
mach-s3c2412 ARM: Remove DISCONTIGMEM support 2010-07-16 10:57:35 +01:00
mach-s3c2416 s3c-fb: add device name initialization 2010-08-11 08:59:10 -07:00
mach-s3c2440 panic: keep blinking in spite of long spin timer mode 2010-08-11 08:59:22 -07:00
mach-s3c2443 s3c-fb: add device name initialization 2010-08-11 08:59:10 -07:00
mach-s5p6440 ARM: SAMSUNG: Fix on build warning regarding VMALLOC_END type 2010-08-27 15:28:38 +09:00
mach-s5p6442 ARM: SAMSUNG: Fix on build warning regarding VMALLOC_END type 2010-08-27 15:28:38 +09:00
mach-s5pc100 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-08-11 09:13:19 -07:00
mach-s5pv210 ARM: S5P: VMALLOC_END should be unsigned long 2010-08-23 10:50:36 +09:00
mach-s5pv310 ARM: S5PV310: Fix on Secondary CPU startup 2010-08-27 18:29:58 +09:00
mach-sa1100 Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel-stable 2010-08-06 18:10:25 +01:00
mach-shark Merge branches 'at91', 'ep93xx', 'kexec', 'iop', 'lmb', 'nomadik', 'nuc', 'pl', 'spear' and 'versatile' into devel 2010-07-31 14:19:35 +01:00
mach-shmobile ARM: mach-shmobile: ap4evb: fix write protect for SDHI1 2010-08-20 20:41:23 +09: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
mach-stmp378x
mach-tegra arm: tegra: VMALLOC_END should be unsigned long 2010-08-22 12:54:23 -07:00
mach-u300 ARM: 6377/1: supply _cansleep gpio function to U300 2010-09-17 10:16:49 +01:00
mach-ux500 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2010-08-09 21:00:07 -07:00
mach-versatile ARM: 6282/1: Remove useless definitions from versatile hardware.h 2010-08-05 10:35:49 +01:00
mach-vexpress ARM: 6395/1: VExpress: Set bit 22 in the PL310 (cache controller) AuxCtlr register 2010-09-17 10:16:52 +01:00
mach-w90x900 i2c/nuc900: add i2c driver support for nuc900 2010-08-11 00:34:38 +01:00
mm ARM: 6401/1: plug a race in the alignment trap handler 2010-09-23 15:17:04 +01:00
nwfpe
oprofile
plat-iop Merge branch 'misc' into devel 2010-07-31 14:20:02 +01:00
plat-mxc ARM: imx: set cache line size to 64 bytes for i.MX5 2010-08-21 12:22:43 +02:00
plat-nomadik ARM: 6376/1: plat-nomadik: MTU: Change prescaler limit and comment updates 2010-09-17 10:16:48 +01:00
plat-omap omap: Fix sev instruction usage for multi-omap 2010-08-16 09:22:04 +03: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: pxa: Make id const in pwm_probe() 2010-08-30 09:59:44 +08:00
plat-s3c24xx Merge branch 'master' into for-next 2010-06-16 18:08:13 +02:00
plat-s5p ARM: S5PV310: Fix on Secondary CPU startup 2010-08-27 18:29:58 +09:00
plat-samsung s5pc110: SDHCI-s3c can override host capabilities 2010-08-20 09:34:55 -07:00
plat-spear Merge branch 'master' into for-next 2010-08-04 15:14:38 +02:00
plat-stmp3xxx
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 ARM: 6400/1: at91: fix arch_gettimeoffset fallout 2010-09-19 12:16:27 +01:00
Kconfig-nommu
Kconfig.debug
Makefile ARM: 6328/1: Build with -fno-dwarf2-cfi-asm 2010-08-14 23:58:43 +01:00