diff options
author | Amit Shah <amit.shah@qumranet.com> | 2007-12-02 13:18:44 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-12-14 09:50:56 -0800 |
commit | c5c1366253addd6691d620f18f7e660c4e11b08d (patch) | |
tree | 4e81ac35bb79ddc8fad4cd4e158799efdf492004 /drivers | |
parent | 86a1b7f0192d2f66a302a681fd76ce701f711953 (diff) |
KVM: SVM: Fix FPU leak while emulating clts
patch 404fb881b82cf0cf6981832f8d31a7484e4dee81 in mainline.
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/kvm/kvm_main.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c index b514dfbb675..504e81dcbf9 100644 --- a/drivers/kvm/kvm_main.c +++ b/drivers/kvm/kvm_main.c @@ -1163,10 +1163,7 @@ int emulate_invlpg(struct kvm_vcpu *vcpu, gva_t address) int emulate_clts(struct kvm_vcpu *vcpu) { - unsigned long cr0; - - cr0 = vcpu->cr0 & ~CR0_TS_MASK; - kvm_arch_ops->set_cr0(vcpu, cr0); + kvm_arch_ops->set_cr0(vcpu, vcpu->cr0 & ~X86_CR0_TS); return X86EMUL_CONTINUE; } |