Message ID | 1412089013-404-1-git-send-email-julien.grall@linaro.org |
---|---|
State | Accepted, archived |
Headers | show |
On Tue, 2014-09-30 at 15:56 +0100, Julien Grall wrote: > 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>
On Wed, 2014-10-01 at 11:34 +0100, Ian Campbell wrote: > On Tue, 2014-09-30 at 15:56 +0100, Julien Grall wrote: > > 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> Applied.
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c index cda0523..4b4b4e0 100644 --- a/xen/arch/arm/traps.c +++ b/xen/arch/arm/traps.c @@ -790,7 +790,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);
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> --- This is a bug fix for Xen 4.5. --- xen/arch/arm/traps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)