Message ID | 20220607005905.2933378-1-shaoqin.huang@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] KVM: x86/mmu: Check every prev_roots in __kvm_mmu_free_obsolete_roots() | expand |
On Mon, Jun 06, 2022, shaoqin.huang@intel.com wrote: > From: Shaoqin Huang <shaoqin.huang@intel.com> > > When freeing obsolete previous roots, check prev_roots as intended, not > the current root. > > Signed-off-by: Shaoqin Huang <shaoqin.huang@intel.com> > Fixes: 527d5cd7eece ("KVM: x86/mmu: Zap only obsolete roots if a root shadow page is zapped") Because KVM patches aren't guaranteed to be backported without it (though it's "only" v5.18 that's affected), this needs: Cc: stable@vger.kernel.org Reviewed-by: Sean Christopherson <seanjc@google.com>
Thanks Sean! On 6/7/2022 12:56 AM, Sean Christopherson wrote: > On Mon, Jun 06, 2022, shaoqin.huang@intel.com wrote: >> From: Shaoqin Huang <shaoqin.huang@intel.com> >> >> When freeing obsolete previous roots, check prev_roots as intended, not >> the current root. >> >> Signed-off-by: Shaoqin Huang <shaoqin.huang@intel.com> >> Fixes: 527d5cd7eece ("KVM: x86/mmu: Zap only obsolete roots if a root shadow page is zapped") > > Because KVM patches aren't guaranteed to be backported without it (though it's > "only" v5.18 that's affected), this needs: > > Cc: stable@vger.kernel.org > > Reviewed-by: Sean Christopherson <seanjc@google.com>
On 6/7/22 02:59, shaoqin.huang@intel.com wrote: > From: Shaoqin Huang <shaoqin.huang@intel.com> > > When freeing obsolete previous roots, check prev_roots as intended, not > the current root. > > Signed-off-by: Shaoqin Huang <shaoqin.huang@intel.com> > Fixes: 527d5cd7eece ("KVM: x86/mmu: Zap only obsolete roots if a root shadow page is zapped") > --- > Changes in v2: > - Make the commit message more clearer. > - Fixed the missing idx. > > arch/x86/kvm/mmu/mmu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index f4653688fa6d..e826ee9138fa 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -5179,7 +5179,7 @@ static void __kvm_mmu_free_obsolete_roots(struct kvm *kvm, struct kvm_mmu *mmu) > roots_to_free |= KVM_MMU_ROOT_CURRENT; > > for (i = 0; i < KVM_MMU_NUM_PREV_ROOTS; i++) { > - if (is_obsolete_root(kvm, mmu->root.hpa)) > + if (is_obsolete_root(kvm, mmu->prev_roots[i].hpa)) > roots_to_free |= KVM_MMU_ROOT_PREVIOUS(i); > } > Queued, thanks. Paolo
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index f4653688fa6d..e826ee9138fa 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -5179,7 +5179,7 @@ static void __kvm_mmu_free_obsolete_roots(struct kvm *kvm, struct kvm_mmu *mmu) roots_to_free |= KVM_MMU_ROOT_CURRENT; for (i = 0; i < KVM_MMU_NUM_PREV_ROOTS; i++) { - if (is_obsolete_root(kvm, mmu->root.hpa)) + if (is_obsolete_root(kvm, mmu->prev_roots[i].hpa)) roots_to_free |= KVM_MMU_ROOT_PREVIOUS(i); }