OpenCloudOS-Kernel/arch/arm/vfp
Will Deacon 56cb248428 ARM: 7419/1: vfp: fix VFP flushing regression on sigreturn path
Commit ff9a184c ("ARM: 7400/1: vfp: clear fpscr length and stride bits
on entry to sig handler") flushes the VFP state prior to entering a
signal handler so that a VFP operation inside the handler will trap and
force a restore of ABI-compliant registers. Reflushing and disabling VFP
on the sigreturn path is predicated on the saved thread state indicating
that VFP was used by the handler -- however for SMP platforms this is
only set on context-switch, making the check unreliable and causing VFP
register corruption in userspace since the register values are not
necessarily those restored from the sigframe.

This patch unconditionally flushes the VFP state after a signal handler.
Since we already perform the flush before the handler and the flushing
itself happens lazily, the redundant flush when VFP is not used by the
handler is essentially a nop.

Reported-by: Jon Medhurst <tixy@linaro.org>
Signed-off-by: Jon Medhurst <tixy@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2012-05-17 14:48:56 +01:00
..
Makefile ARM: vfp: use -mfloat-abi=soft to build vfp 2011-10-01 21:08:55 +02:00
entry.S Thumb-2: Add some .align statements to the .S files 2009-07-24 12:32:52 +01:00
vfp.h [ARM] 5387/1: Add ptrace VFP support on ARM 2009-02-12 10:59:43 +00:00
vfpdouble.c [ARM] vfp: fix fuitod/fsitod instructions 2008-01-10 17:07:08 +00:00
vfphw.S ARM: vfp: fix a hole in VFP thread migration 2011-07-09 17:22:12 +01:00
vfpinstr.h [ARM] 4583/1: ARMv7: Add VFPv3 support 2008-01-26 14:41:28 +00:00
vfpmodule.c ARM: 7419/1: vfp: fix VFP flushing regression on sigreturn path 2012-05-17 14:48:56 +01:00
vfpsingle.c [ARM] Remove unnecessary asm/ptrace.h from VFP support code 2007-04-22 10:56:40 +01:00