summaryrefslogtreecommitdiff
path: root/arch/arm/kernel/entry-armv.S
diff options
context:
space:
mode:
authorMarc Zyngier <Marc.Zyngier@arm.com>2013-11-04 10:42:29 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-12-04 19:05:05 (GMT)
commit6dccb3023ed7705e09c9af0c6eea02f9200e9880 (patch)
treef5ccaa5e52231521c481a3d8d94602da9a3f4fb5 /arch/arm/kernel/entry-armv.S
parent037ac31712d2f12db2c9be74ab9aab857af5133a (diff)
downloadlinux-fsl-qoriq-6dccb3023ed7705e09c9af0c6eea02f9200e9880.tar.xz
ARM: 7876/1: clear Thumb-2 IT state on exception handling
commit e16b31bf47738f4498d7ce632e12d7d2a6a2492a upstream. The exception handling code fails to clear the IT state, potentially leading to incorrect execution of the fixup if the size of the IT block is more than one. Let fixup_exception do the IT sanitizing if a fixup has been found, and restore CPSR from the stack when returning from a data abort. Cc: Will Deacon <will.deacon@arm.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/arm/kernel/entry-armv.S')
-rw-r--r--arch/arm/kernel/entry-armv.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index 9cbe70c..ec3e5cf 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -192,6 +192,7 @@ __dabt_svc:
svc_entry
mov r2, sp
dabt_helper
+ THUMB( ldr r5, [sp, #S_PSR] ) @ potentially updated CPSR
svc_exit r5 @ return from exception
UNWIND(.fnend )
ENDPROC(__dabt_svc)