diff options
author | Maxim Levitsky <mlevitsk@redhat.com> | 2021-09-13 17:09:50 +0300 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2021-09-22 10:33:16 -0400 |
commit | 37687c403a641f251cb2ef2e7830b88aa0647ba9 (patch) | |
tree | e38f1ba8c0b441699b83c47843eae19164b65f78 /arch | |
parent | e2e6e449d68ddf4ccb0bf72cc50fbc6c69fe7f63 (diff) | |
download | linux-stable-37687c403a641f251cb2ef2e7830b88aa0647ba9.tar.gz linux-stable-37687c403a641f251cb2ef2e7830b88aa0647ba9.tar.bz2 linux-stable-37687c403a641f251cb2ef2e7830b88aa0647ba9.zip |
KVM: x86: reset pdptrs_from_userspace when exiting smm
When exiting SMM, pdpts are loaded again from the guest memory.
This fixes a theoretical bug, when exit from SMM triggers entry to the
nested guest which re-uses some of the migration
code which uses this flag as a workaround for a legacy userspace.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Message-Id: <20210913140954.165665-4-mlevitsk@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kvm/x86.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 11017c94f0aa..ba70e8f11f2c 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7658,6 +7658,13 @@ static void kvm_smm_changed(struct kvm_vcpu *vcpu, bool entering_smm) /* Process a latched INIT or SMI, if any. */ kvm_make_request(KVM_REQ_EVENT, vcpu); + + /* + * Even if KVM_SET_SREGS2 loaded PDPTRs out of band, + * on SMM exit we still need to reload them from + * guest memory + */ + vcpu->arch.pdptrs_from_userspace = false; } kvm_mmu_reset_context(vcpu); |