ARM: KVM: clear exclusive monitor on all exception returns
authorMarc Zyngier <marc.zyngier@arm.com>
Fri, 21 Jun 2013 12:08:48 +0000 (13:08 +0100)
committerChristoffer Dall <christoffer.dall@linaro.org>
Wed, 26 Jun 2013 17:50:05 +0000 (10:50 -0700)
Make sure we clear the exclusive monitor on all exception returns,
which otherwise could lead to lock corruptions.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
arch/arm/kvm/interrupts.S

index 20e03d9..16cd4ba 100644 (file)
@@ -292,6 +292,7 @@ THUMB(      orr     r2, r2, #PSR_T_BIT      )
        ldr     r2, =BSYM(panic)
        msr     ELR_hyp, r2
        ldr     r0, =\panic_str
+       clrex                           @ Clear exclusive monitor
        eret
 .endm
 
@@ -441,6 +442,7 @@ guest_trap:
 
 4:     pop     {r0, r1}                @ Failed translation, return to guest
        mcrr    p15, 0, r0, r1, c7      @ PAR
+       clrex
        pop     {r0, r1, r2}
        eret
 
@@ -467,6 +469,7 @@ switch_to_guest_vfp:
 
        pop     {r3-r7}
        pop     {r0-r2}
+       clrex
        eret
 #endif