Fix use of uninitialized memory when releasing PCI slots

The 'function' field in the PCI address was not correctly
initialized, so it was building the wrong address address
string and so not removing all functions from the in use
list.

* src/qemu/qemu_command.c: Fix initialization of PCI function
This commit is contained in:
Daniel P. Berrange 2011-06-30 15:01:54 +01:00
parent 9f40b80ba8
commit 56a77b4920

View File

@ -931,14 +931,14 @@ int qemuDomainPCIAddressReleaseSlot(qemuDomainPCIAddressSetPtr addrs, int slot)
{
virDomainDeviceInfo dev;
char *addr;
int function;
int ret = 0;
unsigned int *function = &dev.addr.pci.function;
dev.addr.pci.domain = 0;
dev.addr.pci.bus = 0;
dev.addr.pci.slot = slot;
for (function = 0; function <= QEMU_PCI_ADDRESS_LAST_FUNCTION; function++) {
for (*function = 0; *function <= QEMU_PCI_ADDRESS_LAST_FUNCTION; (*function)++) {
addr = qemuPCIAddressAsString(&dev);
if (!addr)
return -1;
@ -950,7 +950,7 @@ int qemuDomainPCIAddressReleaseSlot(qemuDomainPCIAddressSetPtr addrs, int slot)
VIR_FREE(addr);
if (qemuDomainPCIAddressReleaseFunction(addrs, slot, function) < 0)
if (qemuDomainPCIAddressReleaseFunction(addrs, slot, *function) < 0)
ret = -1;
}