]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: s390: ucontrol: Add missing locking around gmap_remove_child()
authorClaudio Imbrenda <imbrenda@linux.ibm.com>
Mon, 3 Aug 2026 12:40:36 +0000 (14:40 +0200)
committerClaudio Imbrenda <imbrenda@linux.ibm.com>
Mon, 3 Aug 2026 14:51:34 +0000 (16:51 +0200)
gmap_remove_child() needs to be called while holding the children_lock
of the parent gmap. This was not the case in the error handling path of
kvm_arch_vcpu_create() for UCONTROL guests.

Fix by adding the missing lock.

Fixes: e38c884df921 ("KVM: s390: Switch to new gmap")
Reviewed-by: Steffen Eiden <seiden@linux.ibm.com>
Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Message-ID: <20260803124040.126471-10-imbrenda@linux.ibm.com>

arch/s390/kvm/kvm-s390.c

index ba811f0673d1073abbf84e8ae5574c9292bc4f98..2741ca323edea50da7134d40cfcbf65c84599531 100644 (file)
@@ -3875,7 +3875,9 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
 
 out_ucontrol_uninit:
        if (kvm_is_ucontrol(vcpu->kvm)) {
+               spin_lock(&vcpu->kvm->arch.gmap->children_lock);
                gmap_remove_child(vcpu->arch.gmap);
+               spin_unlock(&vcpu->kvm->arch.gmap->children_lock);
                vcpu->arch.gmap = gmap_put(vcpu->arch.gmap);
        }
 out_free_sie_block: