]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: VMX: do not use uninitialized gfn_to_hva_cache
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 22 Nov 2021 23:20:16 +0000 (18:20 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 26 Nov 2021 11:43:28 +0000 (06:43 -0500)
commit0c85520f2cbecce9202fefa310777275746f6bf4
treef96061abbabe1d65115ea53ebfafa431b26d64e3
parentb6615abc74c7ded3c5f3b7d759fd8d557fd7b1c5
KVM: VMX: do not use uninitialized gfn_to_hva_cache

An uninitialized gfn_to_hva_cache has ghc->len == 0, which causes
the accessors to croak very loudly.  While a BUG_ON is definitely
_too_ loud and a bug on its own, there is indeed an issue of using
the caches in such a way that they could not have been initialized,
because ghc->gpa == 0 might match and thus kvm_gfn_to_hva_cache_init
would not be called.

For the vmcs12_cache, the solution is simply to invoke
kvm_gfn_to_hva_cache_init unconditionally: we already know
that the cache does not match the current VMCS pointer.
For the shadow_vmcs12_cache, there is no similar condition
that checks the VMCS link pointer, so invalidate the cache
on VMXON.

Fixes: edf9a9d78975 ("KVM: nVMX: Use a gfn_to_hva_cache for vmptrld")
Acked-by: David Woodhouse <dwmw@amazon.co.uk>
Reported-by: syzbot+7b7db8bb4db6fd5e157b@syzkaller.appspotmail.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx/nested.c