From f962e8b6034c80f6887ee70a7dfcd80934121524 Mon Sep 17 00:00:00 2001 From: Laine Stump Date: Tue, 4 Jun 2013 16:02:33 -0400 Subject: [PATCH] pci: eliminate memory leak in virPCIDeviceReattach virPCIDeviceReattach was making the assumption that the dev object given to it was one and the same with the dev object on the inactiveDevs list. If that had been the case, it would not need to free the dev object it removed from the inactive list, because the caller of virPCIDeviceReattach always frees the dev object that it passes in. Since the dev object passed in is *never* the same object that's on the list (it is a different object with the same name and attributes, created just for the purpose of searching for the actual object), simply doing a "ListSteal" to remove the object from the list results in one leaked object; we need to actually free the object after removing it from the list. --- src/util/virpci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/virpci.c b/src/util/virpci.c index 10e95bd8b0..1108ef2bd5 100644 --- a/src/util/virpci.c +++ b/src/util/virpci.c @@ -1266,7 +1266,7 @@ virPCIDeviceReattach(virPCIDevicePtr dev, /* Steal the dev from list inactiveDevs */ if (inactiveDevs) - virPCIDeviceListSteal(inactiveDevs, dev); + virPCIDeviceListDel(inactiveDevs, dev); return 0; }