• Maciej S. Szmigiero's avatar
    KVM: nSVM: Pull CS.Base from actual VMCB12 for soft int/ex re-injection · da0b93d6
    Maciej S. Szmigiero authored
    enter_svm_guest_mode() first calls nested_vmcb02_prepare_control() to copy
    control fields from VMCB12 to the current VMCB, then
    nested_vmcb02_prepare_save() to perform a similar copy of the save area.
    
    This means that nested_vmcb02_prepare_control() still runs with the
    previous save area values in the current VMCB so it shouldn't take the L2
    guest CS.Base from this area.
    
    Explicitly pull CS.Base from the actual VMCB12 instead in
    enter_svm_guest_mode().
    
    Granted, having a non-zero CS.Base is a very rare thing (and even
    impossible in 64-bit mode), having it change between nested VMRUNs is
    probably even rarer, but if it happens it would create a really subtle bug
    so it's better to fix it upfront.
    
    Fixes: 6ef88d6e
    
     ("KVM: SVM: Re-inject INT3/INTO instead of retrying the instruction")
    Signed-off-by: default avatarMaciej S. Szmigiero <maciej.szmigiero@oracle.com>
    Message-Id: <4caa0f67589ae3c22c311ee0e6139496902f2edc.1658159083.git.maciej.szmigiero@oracle.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    da0b93d6
nested.c 48 KB