summaryrefslogtreecommitdiffstats
path: root/drivers/kvm/vmx.c
diff options
context:
space:
mode:
authorAvi Kivity2007-05-02 16:33:43 +0200
committerAvi Kivity2007-07-16 11:05:39 +0200
commit707c08743060b6721b08df68f4fd546b106e7510 (patch)
treef36504b4e1696a36bb63b3bb78edfdf152a59c23 /drivers/kvm/vmx.c
parentKVM: Fix potential guest state leak into host (diff)
downloadkernel-qcow2-linux-707c08743060b6721b08df68f4fd546b106e7510.tar.gz
kernel-qcow2-linux-707c08743060b6721b08df68f4fd546b106e7510.tar.xz
kernel-qcow2-linux-707c08743060b6721b08df68f4fd546b106e7510.zip
KVM: Move some more msr mangling into vmx_save_host_state()
Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm/vmx.c')
-rw-r--r--drivers/kvm/vmx.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index 677b38c4444a..93c3abfc1e0a 100644
--- a/drivers/kvm/vmx.c
+++ b/drivers/kvm/vmx.c
@@ -290,6 +290,13 @@ static void vmx_save_host_state(struct kvm_vcpu *vcpu)
vmcs_writel(HOST_FS_BASE, segment_base(hs->fs_sel));
vmcs_writel(HOST_GS_BASE, segment_base(hs->gs_sel));
#endif
+
+#ifdef CONFIG_X86_64
+ if (is_long_mode(vcpu)) {
+ save_msrs(vcpu->host_msrs + msr_offset_kernel_gs_base, 1);
+ load_msrs(vcpu->guest_msrs, NR_BAD_MSRS);
+ }
+#endif
}
static void vmx_load_host_state(struct kvm_vcpu *vcpu)
@@ -1903,13 +1910,6 @@ preempted:
if (vcpu->guest_debug.enabled)
kvm_guest_debug_pre(vcpu);
-#ifdef CONFIG_X86_64
- if (is_long_mode(vcpu)) {
- save_msrs(vcpu->host_msrs + msr_offset_kernel_gs_base, 1);
- load_msrs(vcpu->guest_msrs, NR_BAD_MSRS);
- }
-#endif
-
again:
vmx_save_host_state(vcpu);
kvm_load_guest_fpu(vcpu);