From: Ján Tomko Date: Wed, 18 Oct 2017 13:33:45 +0000 (+0200) Subject: qemuIsMultiFunctionDevice: return early for non-PCI addresses X-Git-Tag: v3.9.0-rc1~80 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8a0d84e25b2f38b9ce4464ae4c77e0ecde259a45;p=thirdparty%2Flibvirt.git qemuIsMultiFunctionDevice: return early for non-PCI addresses There is no point in iterating over all devices if none of them could possibly match. --- diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 85faa2a46e..be5fa86484 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -3751,6 +3751,9 @@ static int qemuComparePCIDevice(virDomainDefPtr def ATTRIBUTE_UNUSED, static bool qemuIsMultiFunctionDevice(virDomainDefPtr def, virDomainDeviceInfoPtr dev) { + if (dev->type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) + return false; + if (virDomainDeviceInfoIterate(def, qemuComparePCIDevice, dev) < 0) return true; return false; @@ -4852,8 +4855,7 @@ int qemuDomainDetachControllerDevice(virQEMUDriverPtr driver, goto cleanup; } - if (detach->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI && - qemuIsMultiFunctionDevice(vm->def, &detach->info)) { + if (qemuIsMultiFunctionDevice(vm->def, &detach->info)) { virReportError(VIR_ERR_OPERATION_FAILED, _("cannot hot unplug multifunction PCI device: %s"), dev->data.disk->dst);