From: Andrew Cooper Date: Thu, 5 Jan 2017 11:23:15 +0000 (+0000) Subject: x86/pv: Fix determination of 64bit mode in emulate_privilege_op() X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~3054 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f4e8c6539a60df0f710722f303272bafc55bd31d;p=xen.git x86/pv: Fix determination of 64bit mode in emulate_privilege_op() ctxt->addr_size is expressed in bits rather than bytes, and has the value 16, 32 or 64. Comparing < 8 made the intended non-64bit paths dead. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich Tested-by: Jan Beulich --- diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 2d211d1621..a33109d545 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -2100,7 +2100,7 @@ static int pv_emul_virt_to_linear(unsigned long base, unsigned long offset, *addr = base + offset; - if ( ctxt->addr_size < 8 ) + if ( ctxt->addr_size < 64 ) { if ( limit < bytes - 1 || offset > limit - bytes + 1 ) rc = X86EMUL_EXCEPTION; @@ -2169,7 +2169,7 @@ static int priv_op_read_segment(enum x86_segment seg, struct segment_register *reg, struct x86_emulate_ctxt *ctxt) { - if ( ctxt->addr_size < 8 ) + if ( ctxt->addr_size < 64 ) { unsigned long limit; unsigned int sel, ar;