gqa-win: get_pci_info: Use common 'end' label

To prevent memory leaks, always try to free initialized variables.

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>
master
Kostiantyn Kostiuk 2021-08-03 10:11:48 +00:00
parent d0b896a749
commit e78ca586d6
1 changed files with 12 additions and 13 deletions

View File

@ -532,7 +532,7 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
if (dev_info == INVALID_HANDLE_VALUE) { if (dev_info == INVALID_HANDLE_VALUE) {
error_setg_win32(errp, GetLastError(), "failed to get devices tree"); error_setg_win32(errp, GetLastError(), "failed to get devices tree");
goto out; goto end;
} }
g_debug("enumerating devices"); g_debug("enumerating devices");
@ -562,7 +562,7 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
} else { } else {
error_setg_win32(errp, GetLastError(), error_setg_win32(errp, GetLastError(),
"failed to get device interfaces"); "failed to get device interfaces");
goto free_dev_info; goto end;
} }
} }
@ -576,7 +576,7 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
CloseHandle(dev_file); CloseHandle(dev_file);
error_setg_win32(errp, GetLastError(), error_setg_win32(errp, GetLastError(),
"failed to get device slot number"); "failed to get device slot number");
goto free_dev_info; goto end;
} }
CloseHandle(dev_file); CloseHandle(dev_file);
@ -586,7 +586,7 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
} else { } else {
error_setg_win32(errp, GetLastError(), error_setg_win32(errp, GetLastError(),
"failed to get device interfaces"); "failed to get device interfaces");
goto free_dev_info; goto end;
} }
g_debug("found device slot %d. Getting storage controller", number); g_debug("found device slot %d. Getting storage controller", number);
@ -603,7 +603,7 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
} else { } else {
error_setg_win32(errp, GetLastError(), error_setg_win32(errp, GetLastError(),
"failed to get device instance ID"); "failed to get device instance ID");
goto out; goto end;
} }
} }
@ -617,14 +617,14 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
g_error("CM_Locate_DevInst failed with code %lx", cr); g_error("CM_Locate_DevInst failed with code %lx", cr);
error_setg_win32(errp, GetLastError(), error_setg_win32(errp, GetLastError(),
"failed to get device instance"); "failed to get device instance");
goto out; goto end;
} }
cr = CM_Get_Parent(&parent_dev_inst, dev_inst, 0); cr = CM_Get_Parent(&parent_dev_inst, dev_inst, 0);
if (cr != CR_SUCCESS) { if (cr != CR_SUCCESS) {
g_error("CM_Get_Parent failed with code %lx", cr); g_error("CM_Get_Parent failed with code %lx", cr);
error_setg_win32(errp, GetLastError(), error_setg_win32(errp, GetLastError(),
"failed to get parent device instance"); "failed to get parent device instance");
goto out; goto end;
} }
cr = CM_Get_Device_ID_Size(&dev_id_size, parent_dev_inst, 0); cr = CM_Get_Device_ID_Size(&dev_id_size, parent_dev_inst, 0);
@ -632,7 +632,7 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
g_error("CM_Get_Device_ID_Size failed with code %lx", cr); g_error("CM_Get_Device_ID_Size failed with code %lx", cr);
error_setg_win32(errp, GetLastError(), error_setg_win32(errp, GetLastError(),
"failed to get parent device ID length"); "failed to get parent device ID length");
goto out; goto end;
} }
++dev_id_size; ++dev_id_size;
@ -647,7 +647,7 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
g_error("CM_Get_Device_ID failed with code %lx", cr); g_error("CM_Get_Device_ID failed with code %lx", cr);
error_setg_win32(errp, GetLastError(), error_setg_win32(errp, GetLastError(),
"failed to get parent device ID"); "failed to get parent device ID");
goto out; goto end;
} }
} }
@ -661,14 +661,14 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
if (parent_dev_info == INVALID_HANDLE_VALUE) { if (parent_dev_info == INVALID_HANDLE_VALUE) {
error_setg_win32(errp, GetLastError(), error_setg_win32(errp, GetLastError(),
"failed to get parent device"); "failed to get parent device");
goto out; goto end;
} }
parent_dev_info_data.cbSize = sizeof(SP_DEVINFO_DATA); parent_dev_info_data.cbSize = sizeof(SP_DEVINFO_DATA);
if (!SetupDiEnumDeviceInfo(parent_dev_info, 0, &parent_dev_info_data)) { if (!SetupDiEnumDeviceInfo(parent_dev_info, 0, &parent_dev_info_data)) {
error_setg_win32(errp, GetLastError(), error_setg_win32(errp, GetLastError(),
"failed to get parent device data"); "failed to get parent device data");
goto out; goto end;
} }
for (j = 0; for (j = 0;
@ -748,11 +748,10 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp)
break; break;
} }
free_dev_info: end:
if (dev_info != INVALID_HANDLE_VALUE) { if (dev_info != INVALID_HANDLE_VALUE) {
SetupDiDestroyDeviceInfoList(dev_info); SetupDiDestroyDeviceInfoList(dev_info);
} }
out:
return pci; return pci;
} }