CC George as well On Mon, May 09, 2016 at 02:15:40PM +0100, Andrew Cooper wrote: > Raising #GP under such circumstances is architecturally wrong. > > Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com> > --- > CC: Jan Beulich <jbeul...@suse.com> > CC: Tim Deegan <t...@xen.org> > CC: Paul Durrant <paul.durr...@citrix.com> > CC: Wei Liu <wei.l...@citrix.com> > --- > xen/arch/x86/hvm/emulate.c | 3 ++- > xen/arch/x86/mm/shadow/common.c | 3 ++- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c > index be1e7c2..ee5cf1f 100644 > --- a/xen/arch/x86/hvm/emulate.c > +++ b/xen/arch/x86/hvm/emulate.c > @@ -566,7 +566,8 @@ static int hvmemul_virtual_to_linear( > > /* This is a singleton operation: fail it with an exception. */ > hvmemul_ctxt->exn_pending = 1; > - hvmemul_ctxt->trap.vector = TRAP_gp_fault; > + hvmemul_ctxt->trap.vector = > + (seg == x86_seg_ss) ? TRAP_stack_error : TRAP_gp_fault; > hvmemul_ctxt->trap.type = X86_EVENTTYPE_HW_EXCEPTION; > hvmemul_ctxt->trap.error_code = 0; > hvmemul_ctxt->trap.insn_len = 0; > diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c > index 559d4a4..226e32d 100644 > --- a/xen/arch/x86/mm/shadow/common.c > +++ b/xen/arch/x86/mm/shadow/common.c > @@ -148,7 +148,8 @@ static int hvm_translate_linear_addr( > > if ( !okay ) > { > - hvm_inject_hw_exception(TRAP_gp_fault, 0); > + hvm_inject_hw_exception( > + (seg == x86_seg_ss) ? TRAP_stack_error : TRAP_gp_fault, 0); > return X86EMUL_EXCEPTION; > } > > -- > 2.1.4 >
_______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel