[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/3] x86/HVM: correct error code writing during task switch
>>> On 22.11.16 at 17:58, <andrew.cooper3@xxxxxxxxxx> wrote: > On 22/11/16 13:56, Jan Beulich wrote: >> Whether to write 32 or just 16 bits depends on the D bit of the target >> CS. The width of the stack pointer to use depends on the B bit of the >> target SS. >> >> Also avoid using the no-fault copying routine. >> >> Finally avoid using yet another struct segment_register variable here. >> >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> >> >> --- a/xen/arch/x86/hvm/hvm.c >> +++ b/xen/arch/x86/hvm/hvm.c >> @@ -3033,9 +3033,6 @@ void hvm_task_switch( >> goto out; >> } >> >> - if ( (tss.trace & 1) && !exn_raised ) >> - hvm_inject_hw_exception(TRAP_debug, HVM_DELIVER_NO_ERROR_CODE); >> - >> tr.attr.fields.type = 0xb; /* busy 32-bit tss */ >> hvm_set_segment_register(v, x86_seg_tr, &tr); >> >> @@ -3051,17 +3048,32 @@ void hvm_task_switch( >> >> if ( errcode >= 0 ) >> { >> - struct segment_register reg; >> unsigned long linear_addr; >> - regs->esp -= 4; >> - hvm_get_segment_register(current, x86_seg_ss, ®); >> - /* Todo: do not ignore access faults here. */ >> - if ( hvm_virtual_to_linear_addr(x86_seg_ss, ®, regs->esp, >> - 4, hvm_access_write, 32, >> + unsigned int opsz, sp; >> + >> + hvm_get_segment_register(current, x86_seg_cs, &segr); > > You already have current latched in v at this point. Oh, right - I've blindly modified the old function invocation. > 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 |