Re: [PATCH v2 3/8] KVM: s390: vsie: Fix check for pre-existing shadow mapping
From: Janosch Frank
Date: Tue Mar 24 2026 - 09:22:45 EST
On 3/20/26 17:15, 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")
---
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 */
s/occourred/occurred/
- 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;
In this case "table" is not a table but a parent dat entry.
It would make me happy if you'd fix that up at some point, not necessarily in this patch.
Reviewed-by: Janosch Frank <frankja@xxxxxxxxxxxxx>