]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
KVM: VMX: Fix host MSR_KERNEL_GS_BASE corruption
authorAvi Kivity <avi@redhat.com>
Tue, 6 Jul 2010 08:30:49 +0000 (11:30 +0300)
committerAvi Kivity <avi@redhat.com>
Tue, 6 Jul 2010 08:41:31 +0000 (11:41 +0300)
commitda38f43859467a8048365b9e1cce99ccbc62b6e2
treeb36e9200ded220e1e7499dad8f64c742db451088
parent815c4163b6c8ebf8152f42b0a5fd015cfdcedc78
KVM: VMX: Fix host MSR_KERNEL_GS_BASE corruption

enter_lmode() and exit_lmode() modify the guest's EFER.LMA before calling
vmx_set_efer().  However, the latter function depends on the value of EFER.LMA
to determine whether MSR_KERNEL_GS_BASE needs reloading, via
vmx_load_host_state().  With EFER.LMA changing under its feet, it took the
wrong choice and corrupted userspace's %gs.

This causes 32-on-64 host userspace to fault.

Fix not touching EFER.LMA; instead ask vmx_set_efer() to change it.

Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/vmx.c