Fix a seg fault when unallocated mem handle passed to hipIpcOpenMemHandle API
also validate the flag argument passed to hipIpcOpenMemHandle API and return error if it is not equal to "hipIpcMemLazyEnablePeerAccess" (defined to 0) and it is the only supported flag currenlty for this API. SWDEV-253462 Change-Id: Ie1c8b79c680a29dc72bf262cf53ae5e011fb1247
Šī revīzija ir iekļauta:
revīziju iesūtīja
Aryan Salmanpour
vecāks
548ec20ffd
revīzija
c6904623aa
@@ -1970,7 +1970,7 @@ hipError_t hipIpcOpenMemHandle(void** dev_ptr, hipIpcMemHandle_t handle, unsigne
|
||||
amd::Device* device = nullptr;
|
||||
ihipIpcMemHandle_t* ihandle = nullptr;
|
||||
|
||||
if (dev_ptr == nullptr) {
|
||||
if (dev_ptr == nullptr || flags != hipIpcMemLazyEnablePeerAccess) {
|
||||
HIP_RETURN(hipErrorInvalidValue);
|
||||
}
|
||||
|
||||
@@ -1978,6 +1978,10 @@ hipError_t hipIpcOpenMemHandle(void** dev_ptr, hipIpcMemHandle_t handle, unsigne
|
||||
device = hip::getCurrentDevice()->devices()[0];
|
||||
ihandle = reinterpret_cast<ihipIpcMemHandle_t *>(&handle);
|
||||
|
||||
if (ihandle->psize == 0) {
|
||||
HIP_RETURN(hipErrorInvalidValue);
|
||||
}
|
||||
|
||||
if(!device->IpcAttach(&(ihandle->ipc_handle), ihandle->psize, flags, dev_ptr)) {
|
||||
DevLogPrintfError("cannot attach ipc_handle: with ipc_size: %u flags: %u", ihandle->psize, flags);
|
||||
HIP_RETURN(hipErrorInvalidDevicePointer);
|
||||
|
||||
Atsaukties uz šo jaunā problēmā
Block a user