• Avi Kivity's avatar
    KVM: VMX: Fix host MSR_KERNEL_GS_BASE corruption · da38f438
    Avi Kivity authored
    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: default avatarAvi Kivity <avi@redhat.com>
    da38f438
vmx.c 111 KB