• Lai Jiangshan's avatar
    KVM: X86: Move PTE present check from loop body to __shadow_walk_next() · 3e44dce4
    Lai Jiangshan authored
    So far, the loop bodies already ensure the PTE is present before calling
    __shadow_walk_next():  Some loop bodies simply exit with a !PRESENT
    directly and some other loop bodies, i.e. FNAME(fetch) and __direct_map()
    do not currently guard their walks with is_shadow_present_pte, but only
    because they install present non-leaf SPTEs in the loop itself.
    
    But checking pte present in __shadow_walk_next() (which is called from
    shadow_walk_okay()) is more prudent; walking past a !PRESENT SPTE
    would lead to attempting to read a the next level SPTE from a garbage
    iter->shadow_addr.  It also allows to remove the is_shadow_present_pte()
    checks from the loop bodies.
    Reviewed-by: default avatarSean Christopherson <seanjc@google.com>
    Signed-off-by: default avatarLai Jiangshan <laijs@linux.alibaba.com>
    Message-Id: <20210906122547.263316-2-jiangshanlai@gmail.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    3e44dce4
mmu.c 167 KB