From b59bbdba4b53fac18c195bb715cf1af61c77910d Mon Sep 17 00:00:00 2001 From: Laine Stump Date: Jan 11 2017 09:51:54 +0000 Subject: conf: fix fromConfig argument to virDomainPCIAddressValidate() fromConfig should be true if the caller wants virDomainPCIAddressValidate() to loosen restrictions on its interpretation of the pciConnectFlags. In particular, either PCI_DEVICE or PCIE_DEVICE will be counted as equivalent to both, and HOTPLUG will be ignored. In a few cases where libvirt was manually overriding automatic address assignment, it was setting fromConfig to false when validating the hardcoded manual override. This patch changes those to fromConfig=true as a preemptive strike against any future bugs that might otherwise surface. --- diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c index bf201e7..57ddef8 100644 --- a/src/conf/domain_addr.c +++ b/src/conf/domain_addr.c @@ -660,7 +660,7 @@ virDomainPCIAddressReleaseSlot(virDomainPCIAddressSetPtr addrs, if (!(addrStr = virDomainPCIAddressAsString(addr))) goto cleanup; - if (!virDomainPCIAddressValidate(addrs, addr, addrStr, flags, false)) + if (!virDomainPCIAddressValidate(addrs, addr, addrStr, flags, true)) goto cleanup; addrs->buses[addr->bus].slot[addr->slot].functions = 0; diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index 69a64fd..05de13d 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -1207,7 +1207,7 @@ qemuDomainValidateDevicePCISlotsPIIX3(virDomainDefPtr def, if (!(addrStr = virDomainPCIAddressAsString(&tmp_addr))) goto cleanup; if (!virDomainPCIAddressValidate(addrs, &tmp_addr, - addrStr, flags, false)) + addrStr, flags, true)) goto cleanup; if (virDomainPCIAddressSlotInUse(addrs, &tmp_addr)) { @@ -1396,7 +1396,7 @@ qemuDomainValidateDevicePCISlotsQ35(virDomainDefPtr def, if (!(addrStr = virDomainPCIAddressAsString(&tmp_addr))) goto cleanup; if (!virDomainPCIAddressValidate(addrs, &tmp_addr, - addrStr, flags, false)) + addrStr, flags, true)) goto cleanup; if (virDomainPCIAddressSlotInUse(addrs, &tmp_addr)) {