• B
    KVM: x86/mmu: Clear dirtied pages mask bit before early break · f1b3b06a
    Ben Gardon 提交于
    In clear_dirty_pt_masked, the loop is intended to exit early after
    processing each of the GFNs with corresponding bits set in mask. This
    does not work as intended if another thread has already cleared the
    dirty bit or writable bit on the SPTE. In that case, the loop would
    proceed to the next iteration early and the bit in mask would not be
    cleared. As a result the loop could not exit early and would proceed
    uselessly. Move the unsetting of the mask bit before the check for a
    no-op SPTE change.
    
    Fixes: a6a0b05d ("kvm: x86/mmu: Support dirty logging for the TDP
    MMU")
    Suggested-by: NSean Christopherson <seanjc@google.com>
    Signed-off-by: NBen Gardon <bgardon@google.com>
    Message-Id: <20210202185734.1680553-17-bgardon@google.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    f1b3b06a
tdp_mmu.c 33.8 KB