From: Marc Zyngier <maz@kernel.org>
To: Hyunwoo Kim <imv4bel@gmail.com>
Cc: gregkh@linuxfoundation.org, stable@vger.kernel.org, oupton@kernel.org
Subject: Re: [PATCH 6.18.y] KVM: arm64: Take the SRCU lock for page table walks in fault injection and AT emulation
Date: Tue, 09 Jun 2026 11:32:00 +0100 [thread overview]
Message-ID: <86h5nct36n.wl-maz@kernel.org> (raw)
In-Reply-To: <aifhWIyS3A0Bdmnv@v4bel>
On Tue, 09 Jun 2026 10:48:08 +0100,
Hyunwoo Kim <imv4bel@gmail.com> wrote:
>
> [ Upstream commit f2ca45b50d4216c9cc7ffabf50d9ad1932209251 ]
>
> walk_s1() and kvm_walk_nested_s2() expect to be called while holding
> kvm->srcu to guard against memslot changes. While this is generally
> the case, __kvm_at_s12() and __kvm_find_s1_desc_level() call into the
> respective walkers without taking kvm->srcu.
>
> Fix by acquiring kvm->srcu prior to the table walk in both instances.
>
> Cc: stable@vger.kernel.org
> Fixes: 50f77dc87f13 ("KVM: arm64: Populate level on S1PTW SEA injection")
> Fixes: be04cebf3e78 ("KVM: arm64: nv: Add emulation of AT S12E{0,1}{R,W}")
> Suggested-by: Oliver Upton <oupton@kernel.org>
> Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
> Reviewed-by: Oliver Upton <oupton@kernel.org>
> Link: https://patch.msgid.link/aiAZfdeyanIvP8SD@v4bel
> Signed-off-by: Marc Zyngier <maz@kernel.org>
> [ Hyunwoo Kim: __kvm_at_s12() still returns void in 6.18.y, so the
> surrounding context differs from upstream (return; instead of
> return ret;); the added scoped_guard() is unchanged. ]
> Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
> ---
> arch/arm64/kvm/at.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/kvm/at.c b/arch/arm64/kvm/at.c
> index be26d5aa668c..e6de6aac6ede 100644
> --- a/arch/arm64/kvm/at.c
> +++ b/arch/arm64/kvm/at.c
> @@ -1528,7 +1528,8 @@ void __kvm_at_s12(struct kvm_vcpu *vcpu, u32 op, u64 vaddr)
> /* Do the stage-2 translation */
> ipa = (par & GENMASK_ULL(47, 12)) | (vaddr & GENMASK_ULL(11, 0));
> out.esr = 0;
> - ret = kvm_walk_nested_s2(vcpu, ipa, &out);
> + scoped_guard(srcu, &vcpu->kvm->srcu)
> + ret = kvm_walk_nested_s2(vcpu, ipa, &out);
> if (ret < 0)
> return;
>
> @@ -1623,7 +1624,8 @@ int __kvm_find_s1_desc_level(struct kvm_vcpu *vcpu, u64 va, u64 ipa, int *level)
> }
>
> /* Walk the guest's PT, looking for a match along the way */
> - ret = walk_s1(vcpu, &wi, &wr, va);
> + scoped_guard(srcu, &vcpu->kvm->srcu)
> + ret = walk_s1(vcpu, &wi, &wr, va);
> switch (ret) {
> case -EINTR:
> /* We interrupted the walk on a match, return the level */
Thanks for going the extra mile and doing the backport, much
appreciated.
Acked-by: Marc Zyngier <maz@kernel.org>
M.
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2026-06-09 10:32 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-09 9:48 [PATCH 6.18.y] KVM: arm64: Take the SRCU lock for page table walks in fault injection and AT emulation Hyunwoo Kim
2026-06-09 10:32 ` Marc Zyngier [this message]
2026-06-10 12:02 ` Sasha Levin
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=86h5nct36n.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=imv4bel@gmail.com \
--cc=oupton@kernel.org \
--cc=stable@vger.kernel.org \
/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.