• Roman Kagan's avatar
    kvm: x86: vmx: fix vpid leak · 63aff655
    Roman Kagan authored
    VPID for the nested vcpu is allocated at vmx_create_vcpu whenever nested
    vmx is turned on with the module parameter.
    
    However, it's only freed if the L1 guest has executed VMXON which is not
    a given.
    
    As a result, on a system with nested==on every creation+deletion of an
    L1 vcpu without running an L2 guest results in leaking one vpid.  Since
    the total number of vpids is limited to 64k, they can eventually get
    exhausted, preventing L2 from starting.
    
    Delay allocation of the L2 vpid until VMXON emulation, thus matching its
    freeing.
    
    Fixes: 5c614b35
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarRoman Kagan <rkagan@virtuozzo.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    63aff655
vmx.c 374 KB