Re: [PATCH v2 3/8] KVM: s390: vsie: Fix check for pre-existing shadow mapping
From: Steffen Eiden
Date: Mon Mar 23 2026 - 06:55:55 EST
On Fri, Mar 20, 2026 at 05:15:37PM +0100, Claudio Imbrenda wrote:
> When shadowing a nested guest, a check is performed and no shadowing is
> attempted if the nested guest is already shadowed.
>
> The existing check was incomplete; fix it by also checking whether the
> leaf DAT table entry in the existing shadow gmap has the same protection
> as the one specified in the guest DAT entry.
>
> Signed-off-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx>
> Fixes: e38c884df921 ("KVM: s390: Switch to new gmap")
Reviewed-by: Steffen Eiden <seiden@xxxxxxxxxxxxx>
> ---
> arch/s390/kvm/gaccess.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/arch/s390/kvm/gaccess.c b/arch/s390/kvm/gaccess.c
> index 4ee862424ca0..dad02f7f90f1 100644
> --- a/arch/s390/kvm/gaccess.c
> +++ b/arch/s390/kvm/gaccess.c
> @@ -1507,7 +1507,8 @@ static int _gaccess_do_shadow(struct kvm_s390_mmu_cache *mc, struct gmap *sg,
> return rc;
>
> /* A race occourred. The shadow mapping is already valid, nothing to do */
> - if ((ptep && !ptep->h.i) || (!ptep && crste_leaf(*table)))
> + if ((ptep && !ptep->h.i && ptep->h.p == w->p) ||
> + (!ptep && crste_leaf(*table) && !table->h.i && table->h.p == w->p))
> return 0;
>
> gl = get_level(table, ptep);
> --
> 2.53.0
>