xen: arm: handle AArch32 userspace when dumping 64-bit guest state.

A 64-bit guest can still be in 32-bit mode when running userspace,
handle this case by dumping the correct 32-bit state.

Note that on ARM it is not possible to change mode without the help
of the next exception level, hence there is no way a 64-bit guest can
be running in 32-bit kernel modes.

This is part of CVE-2014-5147 / XSA-102.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Julien Grall <julien.grall@linaro.org>
This commit is contained in:
Ian Campbell authored and Jan Beulich committed 2014-08-12 15:32:27 +02:00
1 parent 95e6d82224
commit fc0cafeab3
1 file changed
+11 -1
+11 -1
View File
@@ -697,7 +697,17 @@ static void _show_registers(struct cpu_user_regs *regs,
show_registers_32(regs, ctxt, guest_mode, v);
#ifdef CONFIG_ARM_64
else if ( is_64bit_domain(v->domain) )
show_registers_64(regs, ctxt, guest_mode, v);
{
if ( psr_mode_is_32bit(regs->cpsr) )
{
BUG_ON(!usr_mode(regs));
show_registers_32(regs, ctxt, guest_mode, v);
}
else
{
show_registers_64(regs, ctxt, guest_mode, v);
}
}
#endif
}
else
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.