From: Sean Christopherson Date: Fri, 13 Sep 2019 02:46:12 +0000 (-0700) Subject: KVM: x86/mmu: Skip invalid pages during zapping iff root_count is zero X-Git-Tag: v5.4-rc1~26^2~12 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=9a5c034c9abaef81ad9df0221638785a088942b5;p=linux.git KVM: x86/mmu: Skip invalid pages during zapping iff root_count is zero Do not skip invalid shadow pages when zapping obsolete pages if the pages' root_count has reached zero, in which case the page can be immediately zapped and freed. Update the comment accordingly. Signed-off-by: Sean Christopherson Signed-off-by: Paolo Bonzini --- diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 5f0864000360..5269aa057dfa 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -5693,11 +5693,12 @@ static void kvm_zap_obsolete_pages(struct kvm *kvm) break; /* - * Since we are reversely walking the list and the invalid - * list will be moved to the head, skip the invalid page - * can help us to avoid the infinity list walking. + * Skip invalid pages with a non-zero root count, zapping pages + * with a non-zero root count will never succeed, i.e. the page + * will get thrown back on active_mmu_pages and we'll get stuck + * in an infinite loop. */ - if (sp->role.invalid) + if (sp->role.invalid && sp->root_count) continue; /*