On Tue, Sep 14, 2021 at 09:47:24AM -0700, Peter Gonda wrote: > +static int sev_lock_vcpus_for_migration(struct kvm *kvm) > +{ > + struct kvm_vcpu *vcpu; > + int i, j; > + > + kvm_for_each_vcpu(i, vcpu, kvm) { > + if (mutex_lock_killable(&vcpu->mutex)) > + goto out_unlock; > + } > + > + return 0; > + > +out_unlock: > + kvm_for_each_vcpu(j, vcpu, kvm) { > + mutex_unlock(&vcpu->mutex); > + if (i == j) > + break; Hmm, doesn't the mutex_unlock() need to happen after the check?