[PATCH v2 0/8] KVM: s390: More gmap and vsie fixes

From: Claudio Imbrenda

Date: Mon Jun 01 2026 - 11:34:48 EST


Another batch of fixups for gmap and vsie. Some minor fixes, some
not-so-minor fixes that could have caused guest corruption under
particular circumstances.

v1->v2:
* Reordered the patches
* _gmap_crstep_xchg_atomic() will now attempt to clear the vsie_notif
bit when failing due to unshadowing; this prevents potential loops
* try_get_locked_pte() will now return -EAGAIN instead of NULL if the
pte was reached but the lock was contended; this prevents potential
loops
* _kvm_s390_pv_make_secure() will now attempt mmap_read_trylock(); this
prevents try_get_locked_pte() from potentially racing
* Take kvm->slots_lock instead of kvm->slots_arch_lock in
kvm_s390_set_mem_control() when handling KVM_S390_VM_MEM_LIMIT_SIZE,
and also take kvm->lock.
* Minor cosmetic / style fixes.

Claudio Imbrenda (8):
KVM: s390: Fix _gmap_unmap_crste()
KVM: s390: Fix _gmap_crstep_xchg_atomic()
KVM: s390: Avoid potentially sleeping while atomic when zapping pages
KVM: s390: Fix guest / virtual address confusion in _essa_clear_cbrl()
KVM: s390: vsie: Fix rmap handling in _do_shadow_crste()
KVM: s390: Fix fault-in code
KVM: s390: Lock pte when making page secure
KVM: s390: Prevent memslots outside the ASCE range

arch/s390/include/asm/gmap_helpers.h | 1 +
arch/s390/kvm/faultin.c | 14 ++--
arch/s390/kvm/gaccess.c | 11 +--
arch/s390/kvm/gmap.c | 19 ++++-
arch/s390/kvm/gmap.h | 3 +
arch/s390/kvm/kvm-s390.c | 30 ++++++-
arch/s390/kvm/priv.c | 8 +-
arch/s390/kvm/pv.c | 21 ++++-
arch/s390/mm/gmap_helpers.c | 117 ++++++++++++++++-----------
9 files changed, 157 insertions(+), 67 deletions(-)

--
2.54.0