vmm: Avoid infinite loop in vcpu_lock_all error case.
Reported by: Coverity (CIDs 1501060,1501071) Reviewed by: corvink, markj, emaste Differential Revision: https://reviews.freebsd.org/D37648
This commit is contained in:
parent
91980db1be
commit
d212d6ebb4
@ -149,7 +149,7 @@ vcpu_lock_all(struct vmmdev_softc *sc)
|
||||
{
|
||||
struct vcpu *vcpu;
|
||||
int error;
|
||||
uint16_t i, maxcpus;
|
||||
uint16_t i, j, maxcpus;
|
||||
|
||||
vm_slock_vcpus(sc->vm);
|
||||
maxcpus = vm_get_maxcpus(sc->vm);
|
||||
@ -163,11 +163,11 @@ vcpu_lock_all(struct vmmdev_softc *sc)
|
||||
}
|
||||
|
||||
if (error) {
|
||||
while (--i >= 0) {
|
||||
vcpu = vm_vcpu(sc->vm, i);
|
||||
for (j = 0; j < i; j++) {
|
||||
vcpu = vm_vcpu(sc->vm, j);
|
||||
if (vcpu == NULL)
|
||||
continue;
|
||||
vcpu_unlock_one(sc, i, vcpu);
|
||||
vcpu_unlock_one(sc, j, vcpu);
|
||||
}
|
||||
vm_unlock_vcpus(sc->vm);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user