[libvirt] [PATCH 04/22] pci: eliminate memory leak in virPCIDeviceReattach

Laine Stump laine at laine.org
Mon Jun 24 21:43:06 UTC 2013


On 06/24/2013 10:57 AM, Daniel P. Berrange wrote:
> On Mon, Jun 24, 2013 at 05:54:53AM -0400, Laine Stump wrote:
>> 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 10e95bd..1108ef2 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;
>>  }
> ACK


Pushed. Thanks!




More information about the libvir-list mailing list