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


[ROCm/hip commit: c6904623aa]
Este commit está contenido en:
Aryan Salmanpour
2020-10-05 16:33:32 -04:00
cometido por Aryan Salmanpour
padre 66aba3ea21
commit 9ec79d899a
+5 -1
Ver fichero
@@ -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);