They're being zeroed a few lines down when non-null selectors are being
found in the respective registers.

Signed-off-by: Jan Beulich <jbeul...@suse.com>

--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -1449,10 +1449,11 @@ static void save_segments(struct vcpu *v
 
     if ( cpu_has_fsgsbase && !is_pv_32bit_vcpu(v) )
     {
-        v->arch.pv_vcpu.fs_base = __rdfsbase();
+        if ( !(regs->fs & ~3) )
+            v->arch.pv_vcpu.fs_base = __rdfsbase();
         if ( v->arch.flags & TF_kernel_mode )
             v->arch.pv_vcpu.gs_base_kernel = __rdgsbase();
-        else
+        else if ( !(regs->gs & ~3) )
             v->arch.pv_vcpu.gs_base_user = __rdgsbase();
     }
 




_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

Reply via email to