]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/kvm/vmx.c
KVM: Prevent guest fpu state from leaking into the host
[linux-2.6-omap-h63xx.git] / drivers / kvm / vmx.c
index 184238e2ece4679ce04f68f455033d93b1710af5..c1ac106ace8c1c99193c9b87667396f4adbfb2c5 100644 (file)
@@ -280,6 +280,7 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu)
 
 static void vmx_vcpu_put(struct kvm_vcpu *vcpu)
 {
+       kvm_put_guest_fpu(vcpu);
        put_cpu();
 }
 
@@ -1847,10 +1848,8 @@ again:
        if (vcpu->guest_debug.enabled)
                kvm_guest_debug_pre(vcpu);
 
-       if (vcpu->fpu_active) {
-               fx_save(vcpu->host_fx_image);
-               fx_restore(vcpu->guest_fx_image);
-       }
+       kvm_load_guest_fpu(vcpu);
+
        /*
         * Loading guest fpu may have cleared host cr0.ts
         */
@@ -2012,11 +2011,6 @@ again:
        }
 #endif
 
-       if (vcpu->fpu_active) {
-               fx_save(vcpu->guest_fx_image);
-               fx_restore(vcpu->host_fx_image);
-       }
-
        vcpu->interrupt_window_open = (vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & 3) == 0;
 
        asm ("mov %0, %%ds; mov %0, %%es" : : "r"(__USER_DS));