gqa-win: get_pci_info: Free parent_dev_info properly

In case when the function fails to get parent device data,
the parent_dev_info variable will be initialized, but not freed.

Signed-off-by: Kostiantyn Kostiuk <konstantin@daynix.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>
This commit is contained in:
Kostiantyn Kostiuk 2021-08-03 10:26:14 +00:00
parent e78ca586d6
commit c49ca88b55

View File

@ -515,6 +515,8 @@ DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT,
static GuestPCIAddress *get_pci_info(int number, Error **errp)
{
HDEVINFO dev_info = INVALID_HANDLE_VALUE;
HDEVINFO parent_dev_info = INVALID_HANDLE_VALUE;
SP_DEVINFO_DATA dev_info_data;
SP_DEVICE_INTERFACE_DATA dev_iface_data;
HANDLE dev_file;
@ -542,7 +544,6 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
PSP_DEVICE_INTERFACE_DETAIL_DATA pdev_iface_detail_data = NULL;
STORAGE_DEVICE_NUMBER sdn;
char *parent_dev_id = NULL;
HDEVINFO parent_dev_info;
SP_DEVINFO_DATA parent_dev_info_data;
DWORD j;
DWORD size = 0;
@ -744,11 +745,13 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
break;
}
}
SetupDiDestroyDeviceInfoList(parent_dev_info);
break;
}
end:
if (parent_dev_info != INVALID_HANDLE_VALUE) {
SetupDiDestroyDeviceInfoList(parent_dev_info);
}
if (dev_info != INVALID_HANDLE_VALUE) {
SetupDiDestroyDeviceInfoList(dev_info);
}