From 2bc87d85c0a1b1fc13ede98ebe059e5a6e84d535 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 30 Apr 2018 18:02:47 +0200 Subject: [PATCH] x86emul: VMOVNTDQA should raise #GP(0) on mis-alignment Commit 50b73118d5 introduced emulation of the insn without extending the set of opcodes requiring special alignment related #GP behavior. Signed-off-by: Jan Beulich Acked-by: Andrew Cooper Release-acked-by: Juergen Gross --- xen/arch/x86/x86_emulate/x86_emulate.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c index 8ffda8384a..e372c4bb03 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -8519,11 +8519,12 @@ x86_emulate( if ( op_bytes < 16 || (vex.opcx - ? /* vmov{{a,nt}p{s,d},dqa,ntdq} are exceptions. */ - ext != ext_0f || - ((b | 1) != 0x29 && b != 0x2b && - ((b | 0x10) != 0x7f || vex.pfx != vex_66) && - b != 0xe7) + ? /* vmov{{a,nt}p{s,d},{,nt}dqa,ntdq} are exceptions. */ + ext == ext_0f + ? ((b | 1) != 0x29 && b != 0x2b && + ((b | 0x10) != 0x7f || vex.pfx != vex_66) && + b != 0xe7) + : (ext != ext_0f38 || b != 0x2a) : /* movup{s,d}, {,mask}movdqu, and lddqu are exceptions. */ ext == ext_0f && ((b | 1) == 0x11 || -- 2.30.2