lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 0028/1157] KVM: Put the extra pfn reference when reusing a pfn in the gpc cache
    Date
    From: Sean Christopherson <seanjc@google.com>

    commit 3dddf65b4f4c451c345d34ae85bdf1791a746e49 upstream.

    Put the struct page reference to pfn acquired by hva_to_pfn() when the
    old and new pfns for a gfn=>pfn cache match. The cache already has a
    reference via the old/current pfn, and will only put one reference when
    the cache is done with the pfn.

    Fixes: 982ed0de4753 ("KVM: Reinstate gfn_to_pfn_cache with invalidation support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20220429210025.3293691-5-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    virt/kvm/pfncache.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    --- a/virt/kvm/pfncache.c
    +++ b/virt/kvm/pfncache.c
    @@ -206,6 +206,14 @@ int kvm_gfn_to_pfn_cache_refresh(struct

    if (gpc->usage & KVM_HOST_USES_PFN) {
    if (new_pfn == old_pfn) {
    + /*
    + * Reuse the existing pfn and khva, but put the
    + * reference acquired hva_to_pfn_retry(); the
    + * cache still holds a reference to the pfn
    + * from the previous refresh.
    + */
    + gpc_release_pfn_and_khva(kvm, new_pfn, NULL);
    +
    new_khva = old_khva;
    old_pfn = KVM_PFN_ERR_FAULT;
    old_khva = NULL;

    \
     
     \ /
      Last update: 2022-08-15 23:54    [W:4.072 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site