“d7b1acd3b524b39f418e463e836b48ac041954d6”上不存在“README.md”
  • B
    KVM: x86/mmu: Ensure TDP MMU roots are freed after yield · a889ea54
    Ben Gardon 提交于
    Many TDP MMU functions which need to perform some action on all TDP MMU
    roots hold a reference on that root so that they can safely drop the MMU
    lock in order to yield to other threads. However, when releasing the
    reference on the root, there is a bug: the root will not be freed even
    if its reference count (root_count) is reduced to 0.
    
    To simplify acquiring and releasing references on TDP MMU root pages, and
    to ensure that these roots are properly freed, move the get/put operations
    into another TDP MMU root iterator macro.
    
    Moving the get/put operations into an iterator macro also helps
    simplify control flow when a root does need to be freed. Note that using
    the list_for_each_entry_safe macro would not have been appropriate in
    this situation because it could keep a pointer to the next root across
    an MMU lock release + reacquire, during which time that root could be
    freed.
    Reported-by: NMaciej S. Szmigiero <maciej.szmigiero@oracle.com>
    Suggested-by: NPaolo Bonzini <pbonzini@redhat.com>
    Fixes: faaf05b0 ("kvm: x86/mmu: Support zapping SPTEs in the TDP MMU")
    Fixes: 063afacd ("kvm: x86/mmu: Support invalidate range MMU notifier for TDP MMU")
    Fixes: a6a0b05d ("kvm: x86/mmu: Support dirty logging for the TDP MMU")
    Fixes: 14881998 ("kvm: x86/mmu: Support disabling dirty logging for the tdp MMU")
    Signed-off-by: NBen Gardon <bgardon@google.com>
    Message-Id: <20210107001935.3732070-1-bgardon@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    a889ea54
tdp_mmu.c 31.8 KB
反馈
建议
客服 返回
顶部