Re: [PATCH v3] KVM: SEV: Mark nested locking of vcpu->lock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/29/22 17:51, Peter Gonda wrote:
No, you don't need any of this.  You can rely on there being only one
depmap, otherwise you wouldn't need the mock releases and acquires at
all.  Also the unlocking order does not matter for deadlocks, only the
locking order does.  You're overdoing it. :)

Hmm I'm slightly confused here then. If I take your original suggestion of:

         bool acquired = false;
         kvm_for_each_vcpu(...) {
                 if (acquired)
                         mutex_release(&vcpu->mutex.dep_map,
_THIS_IP_);  <-- Warning here
                 if (mutex_lock_killable_nested(&vcpu->mutex, role)
                         goto out_unlock;
                 acquired = true;

"""
[ 2810.088982] =====================================
[ 2810.093687] WARNING: bad unlock balance detected!
[ 2810.098388] 5.17.0-dbg-DEV #5 Tainted: G           O
[ 2810.103788] -------------------------------------

Ah even if the contents of the dep_map are the same for all locks, it also uses the *pointer* to the dep_map to track (class, subclass) -> pointer and checks for a match.

So yeah, prev_cpu is needed. The unlock ordering OTOH is irrelevant so you don't need to visit the xarray backwards.

Paolo




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux