| From stable-bounces@linux.kernel.org Sun Dec 2 03:19:08 2007 |
| From: Amit Shah <amit.shah@qumranet.com> |
| Date: Sun, 2 Dec 2007 13:18:44 +0200 |
| Subject: KVM: SVM: Fix FPU leak while emulating clts |
| To: stable@kernel.org |
| Cc: kvm-devel@lists.sourceforge.net, Amit Shah <amit.shah@qumranet.com>, linux-kernel@vger.kernel.org, Avi Kivity <avi@qumranet.com> |
| Message-ID: <11965943273853-git-send-email-avi@qumranet.com> |
| |
| From: Amit Shah <amit.shah@qumranet.com> |
| |
| 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> |
| |
| --- |
| drivers/kvm/kvm_main.c | 5 +---- |
| 1 file changed, 1 insertion(+), 4 deletions(-) |
| |
| --- a/drivers/kvm/kvm_main.c |
| +++ b/drivers/kvm/kvm_main.c |
| @@ -1163,10 +1163,7 @@ int emulate_invlpg(struct kvm_vcpu *vcpu |
| |
| 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; |
| } |
| |