WSL2-Linux-Kernel/arch/arm
Dave Martin 247f4993a5 ARM: 7307/1: vfp: fix ptrace regset modification race
In a preemptible kernel, vfp_set() can be preempted, causing the
hardware VFP context to be switched while the thread vfp state is
being read and modified.  This leads to a race condition which can
cause the thread vfp state to become corrupted if lazy VFP context
save occurs due to preemption in between the time thread->vfpstate
is read and the time the modified state is written back.

This may occur if preemption occurs during the execution of a
ptrace() call which modifies the VFP register state of a thread.
Such instances should be very rare in most realistic scenarios --
none has been reported, so far as I am aware.  Only uniprocessor
systems should be affected, since VFP context save is not currently
lazy in SMP kernels.

The problem was introduced by my earlier patch migrating to use
regsets to implement ptrace.

This patch does a vfp_sync_hwstate() before reading
thread->vfpstate, to make sure that the thread's VFP state is not
live in the hardware registers while the registers are modified.

Thanks to Will Deacon for spotting this.

Cc: stable <stable@vger.kernel.org>
Signed-off-by: Dave Martin <dave.martin@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2012-02-02 17:37:42 +00:00
..
boot Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2012-01-16 14:34:54 -08:00
common ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
configs SH/R-Mobile updates for 3.3 merge window. 2012-01-11 23:29:20 -08:00
include/asm ARM: 7301/1: Rename the T() macro to TUSER() to avoid namespace conflicts 2012-01-25 11:07:40 +00:00
kernel ARM: 7307/1: vfp: fix ptrace regset modification race 2012-02-02 17:37:42 +00:00
lib ARM: 7301/1: Rename the T() macro to TUSER() to avoid namespace conflicts 2012-01-25 11:07:40 +00:00
mach-at91 Revert "atmel_lcdfb: Adjust HFP calculation so it matches the manual." 2012-01-11 22:29:30 +00:00
mach-bcmring Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core 2012-01-07 12:03:30 -08:00
mach-clps711x Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-cns3xxx Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-davinci MTD pull for 3.3 2012-01-10 13:45:22 -08:00
mach-dove Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-ebsa110 Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-ep93xx Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-01-17 18:40:24 -08:00
mach-exynos ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
mach-footbridge Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-gemini ARM: big removal of now unused vmalloc.h files 2011-11-26 19:21:29 -05:00
mach-h720x Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-highbank ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
mach-imx ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
mach-integrator Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-iop13xx Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-iop32x Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-iop33x Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-ixp4xx Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-ixp23xx Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-ixp2000 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-kirkwood Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-ks8695 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-l7200/include/mach
mach-lpc32xx Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core 2012-01-07 12:03:30 -08:00
mach-mmp Merge branch 'samsung/driver' into next/drivers 2012-01-09 16:16:29 +00:00
mach-msm ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
mach-mv78xx0 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-mx5 ARM: 7291/1: cache: assume 64-byte L1 cachelines for ARMv7 CPUs 2012-01-23 10:20:05 +00:00
mach-mxs clock management changes for i.MX 2012-01-09 14:44:15 -08:00
mach-netx Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-nomadik Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-omap1 New feature development 2012-01-09 14:38:51 -08:00
mach-omap2 ARM: 7291/1: cache: assume 64-byte L1 cachelines for ARMv7 CPUs 2012-01-23 10:20:05 +00:00
mach-orion5x Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-picoxcell Merge branch 'picoxcell-fixes' of git://github.com/jamieiles/linux-2.6-ji into fixes 2012-01-16 22:45:42 -08:00
mach-pnx4008 Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-prima2 Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-pxa Revert "RTC: sa1100: support sa1100, pxa and mmp soc families" 2012-01-19 17:19:18 +00:00
mach-realview ARM: 7298/1: realview: fix mapping of MPCore private memory region 2012-01-25 09:24:36 +00:00
mach-rpc Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-s3c64xx Merge branch 'samsung-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into fixes 2012-01-16 22:46:19 -08:00
mach-s3c2410 Device tree conversions for samsung and tegra 2012-01-09 14:28:38 -08:00
mach-s3c2412 Device tree conversions for samsung and tegra 2012-01-09 14:28:38 -08:00
mach-s3c2416 Cleanups for the Samsung platforms 2012-01-09 14:30:28 -08:00
mach-s3c2440 Board-level changes 2012-01-09 14:37:41 -08:00
mach-s3c2443 Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core 2012-01-07 12:03:30 -08:00
mach-s5p64x0 Driver specific changes 2012-01-09 14:39:22 -08:00
mach-s5pc100 Cleanups for the Samsung platforms 2012-01-09 14:30:28 -08:00
mach-s5pv210 Cleanups for the Samsung platforms 2012-01-09 14:30:28 -08:00
mach-sa1100 Merge branch 'sa11x0-mcp-fixes' into fixes 2012-01-26 21:06:54 +00:00
mach-shark Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-shmobile ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
mach-spear3xx Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-spear6xx Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-tegra Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound 2012-01-12 08:00:30 -08:00
mach-u300 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl 2012-01-10 10:19:57 -08:00
mach-ux500 ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
mach-versatile Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-vexpress ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
mach-vt8500 ARM: big removal of now unused vmalloc.h files 2011-11-26 19:21:29 -05:00
mach-w90x900 Merge branch 'master' into fixes 2012-01-13 15:00:22 +00:00
mach-zynq Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mm Revert "ARM: 7304/1: ioremap: fix boundary check when reusing static mapping" 2012-02-02 17:37:41 +00:00
nwfpe ARM: 7207/1: Use generic ARM instruction set condition code checks for nwfpe. 2011-12-13 08:52:02 +00:00
oprofile oprofile, arm/sh: Fix oprofile_arch_exit() linkage issue 2011-12-23 11:58:34 +01:00
plat-iop Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
plat-mxc Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-01-17 18:40:24 -08:00
plat-nomadik Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-01-17 18:40:24 -08:00
plat-omap ARM: Add arm_memblock_steal() to allocate memory away from the kernel 2012-01-13 15:02:35 +00:00
plat-orion New feature development 2012-01-09 14:38:51 -08:00
plat-pxa Merge branches 'drivers/macb-gem' and 'drivers/pxa-gpio' into next/drivers 2011-11-23 20:47:41 +00:00
plat-s3c24xx Merge branch 'master' into fixes 2012-01-13 15:00:22 +00:00
plat-s5p Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core 2012-01-07 12:03:30 -08:00
plat-samsung ARM: fixes for ARM platforms 2012-01-17 18:55:56 -08:00
plat-spear Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
plat-versatile ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
tools ARM: Update mach-types 2011-12-23 22:58:10 +00:00
vfp arm: remove several unnecessary module.h include instances 2011-10-31 19:30:48 -04:00
Kconfig ARM: 7291/1: cache: assume 64-byte L1 cachelines for ARMv7 CPUs 2012-01-23 10:20:05 +00:00
Kconfig-nommu
Kconfig.debug Merge branches 'at91/gpio', 'at91/ioremap', 'drivers/macb-gem-cleanup' and 'msm/misc' into next/cleanup 2011-12-01 12:34:21 +00:00
Makefile arm: Remove TCC subarch from Kconfig/Makefile 2012-01-05 13:33:59 +01:00