]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: Drop hack that "manually" informs lockdep of kvm->lock vs. vcpu->mutex
authorSean Christopherson <seanjc@google.com>
Wed, 9 Oct 2024 15:04:55 +0000 (08:04 -0700)
committerSean Christopherson <seanjc@google.com>
Mon, 16 Dec 2024 22:37:30 +0000 (14:37 -0800)
Now that KVM takes vcpu->mutex inside kvm->lock when creating a vCPU, drop
the hack to manually inform lockdep of the kvm->lock => vcpu->mutex
ordering.

This effectively reverts commit 42a90008f890 ("KVM: Ensure lockdep knows
about kvm->lock vs. vcpu->mutex ordering rule").

Cc: Oliver Upton <oliver.upton@linux.dev>
Acked-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20241009150455.1057573-7-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
virt/kvm/kvm_main.c

index b855b27a36b65db5f0da217bfaa4c76800598aa6..9d54473d18e38afb52ac0926fa50bac7f6673201 100644 (file)
@@ -4116,12 +4116,6 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, unsigned long id)
 
        mutex_lock(&kvm->lock);
 
-#ifdef CONFIG_LOCKDEP
-       /* Ensure that lockdep knows vcpu->mutex is taken *inside* kvm->lock */
-       mutex_lock(&vcpu->mutex);
-       mutex_unlock(&vcpu->mutex);
-#endif
-
        if (kvm_get_vcpu_by_id(kvm, id)) {
                r = -EEXIST;
                goto unlock_vcpu_destroy;
@@ -4138,7 +4132,8 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, unsigned long id)
         * so that userspace can't invoke vCPU ioctl()s until the vCPU is fully
         * visible (per online_vcpus), e.g. so that KVM doesn't get tricked
         * into a NULL-pointer dereference because KVM thinks the _current_
-        * vCPU doesn't exist.
+        * vCPU doesn't exist.  As a bonus, taking vcpu->mutex ensures lockdep
+        * knows it's taken *inside* kvm->lock.
         */
        mutex_lock(&vcpu->mutex);
        kvm_get_kvm(kvm);