mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
This is to accompany sanitize_input(). Just like for initial state we want to have state between two emulated insns sane, at least as far as assumptions in the main emulator go. Do minimal checking after segment register, CR, and MSR writes, and roll back to the old value in case of failure (raising #GP(0) at the same time). In the particular case observed, a CR0 write clearing CR0.PE was followed by a VEX-encoded insn, which the decoder accepts based on guest address size, restricting things just outside of the 64-bit case (real and virtual modes don't allow VEX-encoded insns). Subsequently _get_fpu() would then assert that CR0.PE must be set (and EFLAGS.VM clear) when trying to invoke YMM, ZMM, or OPMASK state. Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: George Dunlap <george.dunlap@citrix.com>