• Marcelo Tosatti's avatar
    KVM: MMU: prepopulate guest pages after write-protecting · bed1d1df
    Marcelo Tosatti authored
    Zdenek reported a bug where a looping "dmsetup status" eventually hangs
    on SMP guests.
    
    The problem is that kvm_mmu_get_page() prepopulates the shadow MMU
    before write protecting the guest page tables. By doing so, it leaves a
    window open where the guest can mark a pte as present while the host has
    shadow cached such pte as "notrap". Accesses to such address will fault
    in the guest without the host having a chance to fix the situation.
    
    Fix by moving the write protection before the pte prefetch.
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    Signed-off-by: default avatarAvi Kivity <avi@qumranet.com>
    bed1d1df
mmu.c 55.2 KB