Commit 6597ca09 authored by Marcelo Tosatti's avatar Marcelo Tosatti Committed by Avi Kivity

KVM: MMU: Fix rmap_write_protect() hugepage iteration bug

rmap_next() does not work correctly after rmap_remove(), as it expects
the rmap chains not to change during iteration.  Fix (for now) by restarting
iteration from the beginning.
Signed-off-by: default avatarAvi Kivity <avi@qumranet.com>
parent 06e05645
...@@ -640,6 +640,7 @@ static void rmap_write_protect(struct kvm *kvm, u64 gfn) ...@@ -640,6 +640,7 @@ static void rmap_write_protect(struct kvm *kvm, u64 gfn)
rmap_remove(kvm, spte); rmap_remove(kvm, spte);
--kvm->stat.lpages; --kvm->stat.lpages;
set_shadow_pte(spte, shadow_trap_nonpresent_pte); set_shadow_pte(spte, shadow_trap_nonpresent_pte);
spte = NULL;
write_protected = 1; write_protected = 1;
} }
spte = rmap_next(kvm, rmapp, spte); spte = rmap_next(kvm, rmapp, spte);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment