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

[Xen-changelog] [xen stable-4.2] x86/PV: don't commit debug register values early in arch_set_info_guest()



commit 26c8fdfb7f332e1e78cc5d8679e8c3f047178b8d
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Fri Jan 10 11:42:35 2014 +0100
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri Jan 10 11:42:35 2014 +0100

    x86/PV: don't commit debug register values early in arch_set_info_guest()
    
    They're being taken care of later (via set_debugreg()), and temporarily
    copying them into struct vcpu means that bad values may end up getting
    loaded during context switch if the vCPU is already running and the
    function errors out between the premature and real commit step, leading
    to the same issue that XSA-12 dealt with.
    
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
    Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Acked-by: Keir Fraser <keir@xxxxxxx>
    master commit: 398c39b6c18d0b55acfc88f5ee75b3a793e6eeec
    master date: 2013-12-11 10:33:19 +0100
---
 xen/arch/x86/domain.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 68c435e..ecba304 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -829,13 +829,14 @@ int arch_set_info_guest(
                            c.cmp->trap_ctxt + i);
     }
 #endif
-    for ( i = 0; i < ARRAY_SIZE(v->arch.debugreg); ++i )
-        v->arch.debugreg[i] = c(debugreg[i]);
 
     v->arch.user_regs.eflags |= 2;
 
     if ( is_hvm_vcpu(v) )
     {
+        for ( i = 0; i < ARRAY_SIZE(v->arch.debugreg); ++i )
+            v->arch.debugreg[i] = c(debugreg[i]);
+
         hvm_set_info_guest(v);
         goto out;
     }
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.2

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

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