Kernel KVM virtualization development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Claudio Imbrenda" <imbrenda@linux.ibm.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH v2 6/8] KVM: s390: Fix fault-in code
Date: Mon, 01 Jun 2026 16:52:06 +0000	[thread overview]
Message-ID: <20260601165207.61A1E1F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260601152951.196859-7-imbrenda@linux.ibm.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Memory leak of the pinned host page reference when `kvm_s390_new_mmu_cache()` allocation fails.
--

commit 132617ab1e43f506af43740ee664fcdba7a95ff5
Author: Claudio Imbrenda <imbrenda@linux.ibm.com>

KVM: s390: Fix fault-in code

This commit fixes the fault-in code so that it does not return success if
a concurrent unmap event invalidated the fault-in process. It ensures the
code retries properly instead of returning success without actually
faulting in the requested page.

> diff --git a/arch/s390/kvm/faultin.c b/arch/s390/kvm/faultin.c
> index ddf0ca71f3741..cf542b0a7e8e3 100644
> --- a/arch/s390/kvm/faultin.c
> +++ b/arch/s390/kvm/faultin.c

[ ... ]

> @@ -110,20 +111,19 @@ int kvm_s390_faultin_gfn(struct kvm_vcpu *vcpu, struct kvm *kvm, struct guest_fa
>  			if (!mmu_invalidate_retry_gfn(kvm, inv_seq, f->gfn)) {
>  				f->valid = true;
>  				rc = gmap_link(mc, kvm->arch.gmap, f, slot);
> -				kvm_release_faultin_page(kvm, f->page, !!rc, f->write_attempt);
> -				f->page = NULL;
>  			}
> +			kvm_release_faultin_page(kvm, f->page, !!rc, f->write_attempt);
>  		}

[Severity: High]
This isn't a bug introduced by this patch, but I have a question about how
f->page is handled when kvm_s390_new_mmu_cache() fails earlier in this loop.

Earlier in kvm_s390_faultin_gfn() in arch/s390/kvm/faultin.c,
__kvm_faultin_pfn() resolves the PFN and pins the host page, storing it
in f->page.

Then, if mc is NULL, the code attempts to allocate a new cache:

    if (!mc) {
        local_mc = kvm_s390_new_mmu_cache();
        if (!local_mc)
            return -ENOMEM;
        mc = local_mc;
    }

When kvm_s390_new_mmu_cache() fails and returns -ENOMEM, it looks like the
function returns directly without calling kvm_release_faultin_page() to drop
the previously acquired reference in f->page. 

Callers like kvm_s390_faultin_gfn_simple() and access_guest_page_with_key_gpa()
declare struct guest_fault f locally on the stack and propagate the -ENOMEM
error without inspecting or cleaning up f.page.

Can this permanently leak the pinned host page? Under memory pressure, could
an unprivileged guest repeatedly trigger page faults to accumulate leaked page
references and exhaust host memory?

> -		kvm_release_faultin_page(kvm, f->page, true, false);
>  
>  		if (rc == -ENOMEM) {
>  			rc = kvm_s390_mmu_cache_topup(mc);
>  			if (rc)
>  				return rc;
> -		} else if (rc != -EAGAIN) {
> -			return rc;
> +			rc = -EAGAIN;
>  		}
>  	}
> +
> +	return rc;
>  }

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260601152951.196859-1-imbrenda@linux.ibm.com?part=6

  reply	other threads:[~2026-06-01 16:52 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-01 15:29 [PATCH v2 0/8] KVM: s390: More gmap and vsie fixes Claudio Imbrenda
2026-06-01 15:29 ` [PATCH v2 1/8] KVM: s390: Fix _gmap_unmap_crste() Claudio Imbrenda
2026-06-01 15:29 ` [PATCH v2 2/8] KVM: s390: Fix _gmap_crstep_xchg_atomic() Claudio Imbrenda
2026-06-01 15:29 ` [PATCH v2 3/8] KVM: s390: Avoid potentially sleeping while atomic when zapping pages Claudio Imbrenda
2026-06-01 16:09   ` sashiko-bot
2026-06-01 15:29 ` [PATCH v2 4/8] KVM: s390: Fix guest / virtual address confusion in _essa_clear_cbrl() Claudio Imbrenda
2026-06-01 16:25   ` sashiko-bot
2026-06-01 15:29 ` [PATCH v2 5/8] KVM: s390: vsie: Fix rmap handling in _do_shadow_crste() Claudio Imbrenda
2026-06-01 16:41   ` sashiko-bot
2026-06-01 15:29 ` [PATCH v2 6/8] KVM: s390: Fix fault-in code Claudio Imbrenda
2026-06-01 16:52   ` sashiko-bot [this message]
2026-06-01 15:29 ` [PATCH v2 7/8] KVM: s390: Lock pte when making page secure Claudio Imbrenda
2026-06-01 17:10   ` sashiko-bot
2026-06-01 15:29 ` [PATCH v2 8/8] KVM: s390: Prevent memslots outside the ASCE range Claudio Imbrenda
2026-06-01 17:26   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260601165207.61A1E1F00893@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=imbrenda@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox