KVM: SVM: Fix FPU leak while emulating clts
authorAmit Shah <amit.shah@qumranet.com>
Mon, 19 Nov 2007 15:57:35 +0000 (17:57 +0200)
committerAvi Kivity <avi@qumranet.com>
Tue, 27 Nov 2007 13:38:18 +0000 (15:38 +0200)
The clts code didn't use set_cr0 properly, so our lazy FPU
processing wasn't being done by the clts instruction at all.

(this isn't called on Intel as the hardware does the decode for us)

Signed-off-by: Amit Shah <amit.shah@qumranet.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
drivers/kvm/kvm_main.c

index 07ae280e8fe5c279f7077b1e95650949002e44d7..47c10b8f89b3f00a16674fec744e334590f523d7 100644 (file)
@@ -1188,8 +1188,7 @@ int emulate_invlpg(struct kvm_vcpu *vcpu, gva_t address)
 
 int emulate_clts(struct kvm_vcpu *vcpu)
 {
-       vcpu->cr0 &= ~X86_CR0_TS;
-       kvm_x86_ops->set_cr0(vcpu, vcpu->cr0);
+       kvm_x86_ops->set_cr0(vcpu, vcpu->cr0 & ~X86_CR0_TS);
        return X86EMUL_CONTINUE;
 }