All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Vincent Donnefort" <vdonnefort@google.com>
Cc: kvmarm@lists.linux.dev, "Oliver Upton" <oupton@kernel.org>,
	"Marc Zyngier" <maz@kernel.org>
Subject: Re: [PATCH v2] KVM: arm64: Fix protected VM fault on system with pages larger than 4K
Date: Mon, 14 Sep 2026 08:13:42 +0000	[thread overview]
Message-ID: <20260914081343.4FF891F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260914075839.4019904-1-vdonnefort@google.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The patch incorrectly maps the guest PA (L1 IPA) instead of the guest IPA (L2 IPA) in the shadow stage-2 page tables for nested VMs in `gmem_abort()`.
--

commit 3995ce8aa44bf10fe23cdc5e9257510868df129d
Author: Vincent Donnefort <vdonnefort@google.com>

KVM: arm64: Fix protected VM fault on system with pages larger than 4K

This commit aligns the fault IPA down to the page-size for protected VMs to
fix boot issues on systems with larger than 4K pages. It updates
pkvm_pgtable_stage2_map() to require page-aligned arguments and changes the
callers to pass gfn_to_gpa(gfn) instead of the raw fault_ipa.

Link: https://lore.kernel.org/all/20260913173516.3122436-1-vdonnefort@google.com/

> diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c
> index 9ba86450fe4af..ee78201a44df1 100644
> --- a/arch/arm64/kvm/mmu.c
> +++ b/arch/arm64/kvm/mmu.c
> @@ -1672,10 +1672,10 @@ static int gmem_abort(const struct kvm_s2_fault_desc *s2fd)
>  		 * PTE, which will be preserved.
>  		 */
>  		prot &= ~KVM_NV_GUEST_MAP_SZ;
> -		ret = KVM_PGT_FN(kvm_pgtable_stage2_relax_perms)(pgt, s2fd->fault_ipa,
> +		ret = KVM_PGT_FN(kvm_pgtable_stage2_relax_perms)(pgt, gfn_to_gpa(gfn),
>  								 prot, flags);
>  	} else {
> -		ret = KVM_PGT_FN(kvm_pgtable_stage2_map)(pgt, s2fd->fault_ipa, PAGE_SIZE,
> +		ret = KVM_PGT_FN(kvm_pgtable_stage2_map)(pgt, gfn_to_gpa(gfn), PAGE_SIZE,
>  							 __pfn_to_phys(pfn), prot,
>  							 memcache, flags);
>  	}

[Severity: High]
Does this change break nested virtualization by mapping the guest PA (L1 IPA)
instead of the faulting guest IPA (L2 IPA)?

For nested VMs handled in gmem_abort(), gfn represents the L1 IPA. By
switching from s2fd->fault_ipa to gfn_to_gpa(gfn) in both
kvm_pgtable_stage2_relax_perms() and kvm_pgtable_stage2_map(), the shadow
stage-2 page tables now incorrectly install the mapping at the L1 IPA instead
of the expected L2 IPA.

This results in the L2 guest continuously faulting at the same L2 IPA, leading
to an infinite fault loop (DoS for the nested guest) and shadow page table
corruption. 

[ ... ]

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260914075839.4019904-1-vdonnefort@google.com?part=1

  reply	other threads:[~2026-09-14  8:13 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-14  7:58 [PATCH v2] KVM: arm64: Fix protected VM fault on system with pages larger than 4K Vincent Donnefort
2026-09-14  8:13 ` sashiko-bot [this message]
2026-09-14  8:19   ` Vincent Donnefort
2026-09-14  8:32 ` Marc Zyngier
2026-09-14  8:40   ` Fuad Tabba
2026-09-14  8:41   ` Vincent Donnefort

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=20260914081343.4FF891F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=maz@kernel.org \
    --cc=oupton@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=vdonnefort@google.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.