SWDEV-442126 - Fix use_after_free case in ExtractFatBinaryUsingCOMGR

Change-Id: Ie07cf82025b65e4f95d4ce3cf46a6b8081f29b6a
Этот коммит содержится в:
Ioannis Assiouras
2024-01-19 15:56:15 +00:00
коммит произвёл Maneesh Gupta
родитель b366a7c992
Коммит c4b9442fc4
+3 -7
Просмотреть файл
@@ -115,7 +115,7 @@ void ListAllDeviceWithNoCOFromBundle(const std::unordered_map<std::string,
}
hipError_t FatBinaryInfo::ExtractFatBinaryUsingCOMGR(const std::vector<hip::Device*>& devices) {
amd_comgr_data_t data_object;
amd_comgr_data_t data_object {0};
amd_comgr_status_t comgr_status = AMD_COMGR_STATUS_SUCCESS;
hipError_t hip_status = hipSuccess;
amd_comgr_code_object_info_t* query_list_array = nullptr;
@@ -266,12 +266,6 @@ hipError_t FatBinaryInfo::ExtractFatBinaryUsingCOMGR(const std::vector<hip::Devi
fatbin_dev_info_[device->deviceId()]->program_
= new amd::Program(*(device->asContext()));
}
if ((comgr_status = amd_comgr_release_data(data_object)) != AMD_COMGR_STATUS_SUCCESS) {
LogPrintfError("Releasing COMGR data failed with status %d ", comgr_status);
return hipErrorInvalidValue;
}
} while(0);
// Clean up file and memory resouces if hip_status failed for some reason.
@@ -292,7 +286,9 @@ hipError_t FatBinaryInfo::ExtractFatBinaryUsingCOMGR(const std::vector<hip::Devi
fdesc_ = 0;
fsize_ = 0;
}
}
if (data_object.handle) {
if ((comgr_status = amd_comgr_release_data(data_object)) != AMD_COMGR_STATUS_SUCCESS) {
LogPrintfError("Releasing COMGR data failed with status %d ", comgr_status);
return hipErrorInvalidValue;