The array of virtual functions @vfs in virNodeDeviceGetPCISRIOVCaps() is allocated twice: the first time during its declaration and the second time inside virPCIGetVirtualFunctions() which leads to a memleak: ==16691== 1,128 bytes in 47 blocks are definitely lost in loss record 1,771 of 1,803 ==16691== at 0x4844CC1: calloc (vg_replace_malloc.c:1117) ==16691== by 0x4E50070: g_malloc0 (in /usr/lib64/libglib-2.0.so.0.6800.3) ==16691== by 0x4A7B034: virNodeDeviceGetPCISRIOVCaps (node_device_conf.c:2649) ==16691== by 0x4A7B5E2: virNodeDeviceGetPCIDynamicCaps (node_device_conf.c:2762) ==16691== by 0xA7F6E18: udevProcessPCI (node_device_udev.c:418) Fixes: c97518d9b833a607f29b9bb02e3fbe74c011c088 Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/conf/node_device_conf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index b4c1acb6a5..9bbff97ffd 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -2646,7 +2646,7 @@ static int virNodeDeviceGetPCISRIOVCaps(const char *sysfsPath, virNodeDevCapPCIDev *pci_dev) { - g_autoptr(virPCIVirtualFunctionList) vfs = g_new0(virPCIVirtualFunctionList, 1); + g_autoptr(virPCIVirtualFunctionList) vfs = NULL; size_t i; int ret; -- 2.32.0