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]
このコミットが含まれているのは:
1 親
66aba3ea21
コミット
9ec79d899a
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);
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする