[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 01/18] x86emul: catch exceptions occurring in stubs
>>> On 15.02.17 at 12:27, <andrew.cooper3@xxxxxxxxxx> wrote: > On 15/02/17 11:06, Jan Beulich wrote: >> --- a/xen/arch/x86/x86_emulate/x86_emulate.c >> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c >> @@ -604,14 +604,42 @@ do{ asm volatile ( >> #define __emulate_1op_8byte(_op, _dst, _eflags) >> #endif /* __i386__ */ >> >> +#ifdef __XEN__ >> +# define invoke_stub(pre, post, constraints...) do { \ >> + union stub_exception_token res_ = { .raw = ~0 }; \ >> + asm volatile ( pre "\n\tcall *%[stub]\n\t" post "\n" \ >> + ".Lret%=:\n\t" \ >> + ".pushsection .fixup,\"ax\"\n" \ >> + ".Lfix%=:\n\t" \ >> + "pop %[exn]\n\t" \ >> + "jmp .Lret%=\n\t" \ >> + ".popsection\n\t" \ >> + _ASM_EXTABLE(.Lret%=, .Lfix%=) \ >> + : [exn] "+g" (res_), constraints, \ >> + [stub] "rm" (stub.func) ); \ >> + if ( unlikely(~res_.raw) ) \ >> + { \ >> + gprintk(XENLOG_WARNING, \ >> + "exception %u (ec=%04x) in emulation stub (line %u)\n", \ >> + res_.fields.trapnr, res_.fields.ec, __LINE__); \ > > Can we also hexdump the stub here? I did consider this, but didn't want to go through the hassle. But now that you ask for it, I do recall that we meanwhile have %ph. >> + if ( res_.fields.trapnr != EXC_UD ) \ >> + domain_crash(current->domain); \ > > goto done? Perhaps a good idea (together with setting rc), even if not strictly necessary. > Otherwise, Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Thanks, Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |