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]
このコミットが含まれているのは:
Aryan Salmanpour authored and Aryan Salmanpour committed 2020-10-13 11:14:41 -04:00
1 親 66aba3ea21
コミット 9ec79d899a
1ファイル変更
+5 -1
+5 -1
ファイルの表示
@@ -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);