• Paolo Bonzini's avatar
    KVM: VMX: do not use uninitialized gfn_to_hva_cache · 8503fea6
    Paolo Bonzini authored
    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: cee66664 ("KVM: nVMX: Use a gfn_to_hva_cache for vmptrld")
    Acked-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
    Reported-by: syzbot+7b7db8bb4db6fd5e157b@syzkaller.appspotmail.com
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    8503fea6
nested.c 207 KB