xen/arm64: Make show_registers working even if current is not correctly set
authorJulien Grall <julien.grall@linaro.org>
Tue, 30 Sep 2014 14:56:53 +0000 (15:56 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 1 Oct 2014 11:10:52 +0000 (12:10 +0100)
The commit 8ab802c "xen/arm: Restricted access to IFSR32_EL2 and FPEXC32_EL2"
introduced the use of the variable current in show_registers.

The variable is not correctly set until Xen has finished to boot.
Therefore any call to show_registers will result to crash Xen.

As the register IFSR32_EL2 is only printed when the registers represent
a guest view, Xen can read the value only for this case.

Signed-off-by: Julien Grall <julien.grall@linaro.org>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/arm/traps.c

index 55f6b8fa012b2136209220da1ee5aea8df7e7074..f6fc8f8e1ec161fea7cc53c8af55e69af2d974e1 100644 (file)
@@ -791,7 +791,7 @@ void show_registers(struct cpu_user_regs *regs)
 #else
     ctxt.far = READ_SYSREG(FAR_EL1);
     ctxt.esr_el1 = READ_SYSREG(ESR_EL1);
-    if ( is_32bit_domain(current->domain) )
+    if ( guest_mode(regs) && is_32bit_domain(current->domain) )
         ctxt.ifsr32_el2 = READ_SYSREG(IFSR32_EL2);
 #endif
     ctxt.vttbr_el2 = READ_SYSREG64(VTTBR_EL2);