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]
Bu işleme şunda yer alıyor:
Aryan Salmanpour authored and Aryan Salmanpour committed 2020-10-13 11:14:41 -04:00
1 ebeveyn 66aba3ea21
işleme 9ec79d899a
1 file changed
+5 -1
+5 -1
Dosyayı Görüntüle
@@ -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);