linux/arch/arm64
Dave Martin 27e7506c33 arm64: fpsimd: Prevent registers leaking across exec
commit 096622104e upstream.

There are some tricky dependencies between the different stages of
flushing the FPSIMD register state during exec, and these can race
with context switch in ways that can cause the old task's regs to
leak across.  In particular, a context switch during the memset() can
cause some of the task's old FPSIMD registers to reappear.

Disabling preemption for this small window would be no big deal for
performance: preemption is already disabled for similar scenarios
like updating the FPSIMD registers in sigreturn.

So, instead of rearranging things in ways that might swap existing
subtle bugs for new ones, this patch just disables preemption
around the FPSIMD state flushing so that races of this type can't
occur here.  This brings fpsimd_flush_thread() into line with other
code paths.

Fixes: 674c242c93 ("arm64: flush FP/SIMD state correctly after execve()")
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2017-09-02 07:07:54 +02:00
..
boot ARM64: zynqmp: Fix i2c node's compatible string 2017-08-06 18:59:47 -07:00
configs ZTE arm64 defconfig updates for 4.9: 2016-09-19 22:35:21 +02:00
crypto crypto: arm64/aes-blk - honour iv_out requirement in CBC and CTR modes 2017-02-09 08:08:26 +01:00
include mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes 2017-08-24 17:12:20 -07:00
kernel arm64: fpsimd: Prevent registers leaking across exec 2017-09-02 07:07:54 +02:00
kvm arm64: KVM: Allow unaligned accesses at EL2 2017-06-14 15:05:56 +02:00
lib Merge branch 'work.uaccess' into for-linus 2016-10-14 20:42:44 -04:00
mm arm64: mm: abort uaccess retries upon fatal signal 2017-09-02 07:07:53 +02:00
net bpf, arm64: fix faulty emission of map access in tail calls 2017-06-07 12:07:43 +02:00
xen arm/xen: add support for vm_assist hypercall 2016-07-06 10:42:14 +01:00
Kconfig irqchip/gicv3-its: Add workaround for QDF2400 ITS erratum 0065 2017-03-22 12:43:39 +01:00
Kconfig.debug arm64: always enable DEBUG_RODATA and remove the Kconfig option 2016-08-26 10:13:41 +01:00
Kconfig.platforms arm64: uniphier: select ARCH_HAS_RESET_CONTROLLER 2016-10-22 18:25:52 +09:00
Makefile arm64: kernel: force ET_DYN ELF type for CONFIG_RELOCATABLE=y 2016-10-20 11:37:25 +01:00