On Wed, Apr 30, 2025, Maxim Levitsky wrote: > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index 834f08dfa24c..9211b07b0565 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -1392,6 +1392,31 @@ int kvm_trylock_all_vcpus(struct kvm *kvm) > } > EXPORT_SYMBOL_GPL(kvm_trylock_all_vcpus); > > +/* > + * Lock all of the VM's vCPUs. > + * Assumes that the kvm->lock is held. Add a lockdep assertion instead of a comment. > + * Returns -EINTR if the process is killed. > + */ > +int kvm_lock_all_vcpus(struct kvm *kvm) > +{ > + struct kvm_vcpu *vcpu; > + unsigned long i, j; > + > + kvm_for_each_vcpu(i, vcpu, kvm) Needs curly braces. > + if (mutex_lock_killable_nest_lock(&vcpu->mutex, &kvm->lock)) I'd rather return mutex_lock_killable_nest_lock()'s error code verbatim. Then the function comment can go away, because the only thing remaining would be: /* * Lock all of the VM's vCPUs. /* and that should be completely self-explanatory. E.g. int kvm_lock_all_vcpus(struct kvm *kvm) { struct kvm_vcpu *vcpu; unsigned long i, j; int r; lockdep_assert_held(&kvm->lock); kvm_for_each_vcpu(i, vcpu, kvm) { r = mutex_lock_killable_nest_lock(&vcpu->mutex, &kvm->lock); if (r) goto out_unlock; } return 0; out_unlock: kvm_for_each_vcpu(j, vcpu, kvm) { if (i == j) break; mutex_unlock(&vcpu->mutex); } return r; } EXPORT_SYMBOL_GPL(kvm_lock_all_vcpus);