From 1a3f6608aa4c945bb3f392c25ff06b13f1dc5f30 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 28 Dec 2011 06:53:27 -0700 Subject: [PATCH] qemu: fix inf-loop in blkio parameters https://bugzilla.redhat.com/show_bug.cgi?id=770520 We had two nested loops both trying to use 'i' as the iteration variable, which can result in an infinite loop when the inner loop interferes with the outer loop. Introduced in commit 93ab585. * src/qemu/qemu_driver.c (qemuDomainSetBlkioParameters): Don't reuse iteration variable across two loops. --- src/qemu/qemu_driver.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index eeeb9353b5..a840c1f958 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5982,6 +5982,8 @@ static int qemuDomainSetBlkioParameters(virDomainPtr dom, } else if (STREQ(param->field, VIR_DOMAIN_BLKIO_DEVICE_WEIGHT)) { size_t ndevices; virBlkioDeviceWeightPtr devices = NULL; + int j; + if (param->type != VIR_TYPED_PARAM_STRING) { qemuReportError(VIR_ERR_INVALID_ARG, "%s", _("invalid type for device_weight tunable, " @@ -5996,19 +5998,19 @@ static int qemuDomainSetBlkioParameters(virDomainPtr dom, ret = -1; continue; } - for (i = 0; i < ndevices; i++) { + for (j = 0; j < ndevices; i++) { rc = virCgroupSetBlkioDeviceWeight(group, - devices[i].path, - devices[i].weight); + devices[j].path, + devices[j].weight); if (rc < 0) { virReportSystemError(-rc, _("Unable to set io device weight " "for path %s"), - devices[i].path); + devices[j].path); break; } } - if (i != ndevices) { + if (j != ndevices) { ret = -1; continue; } -- 2.47.2