[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3] xpti: fix bug in double fault handling



On 23/04/18 14:59, Juergen Gross wrote:
> When entering the hypervisor via the double fault handler resetting
> xen_cr3 was missing. This led to switching to pv_cr3 when returning
> from the next following exception, so repair this in order to allow
> exception handling to work even after a double fault.
>
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>

Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Tested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

> ---
>  xen/arch/x86/x86_64/entry.S | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
> index 45d9842d09..1cd7d93892 100644
> --- a/xen/arch/x86/x86_64/entry.S
> +++ b/xen/arch/x86/x86_64/entry.S
> @@ -767,12 +767,14 @@ ENTRY(double_fault)
>          /* WARNING! `ret`, `call *`, `jmp *` not safe before this point. */
>  
>          mov   STACK_CPUINFO_FIELD(xen_cr3)(%r14), %rbx
> -        test  %rbx, %rbx
> +        neg   %rbx
>          jz    .Ldblf_cr3_okay
>          jns   .Ldblf_cr3_load
> +        mov   %rbx, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
>          neg   %rbx
>  .Ldblf_cr3_load:
>          mov   %rbx, %cr3
> +        movq $0, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
>  .Ldblf_cr3_okay:
>  
>          movq  %rsp,%rdi


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.