SWDEV-357246 - Fixes to return with a error code instead of segfault in alloc failure case

Change-Id: Ie18d50f2f7ef3f4b2c0153152fca057232c1f8a2


[ROCm/clr commit: aeeab1c975]
此提交包含在:
Sourabh Betigeri authored and Maneesh Gupta committed 2022-10-04 09:38:42 -04:00
1 父節點 08d7b38b0f
當前提交 8ceb2ac5d6
2 file changed
+14 -5

No files matched your search

+3
查看文件
@@ -226,6 +226,9 @@ hipError_t ihipMallocManaged(void** ptr, size_t size, unsigned int align) {
}
size_t offset = 0; //this is ignored
amd::Memory* memObj = getMemoryObject(*ptr, offset);
if (memObj == nullptr) {
return hipErrorMemoryAllocation;
}
//saves the current device id so that it can be accessed later
memObj->getUserData().deviceId = hip::getCurrentDevice()->deviceId();
+11 -5
查看文件
@@ -43,13 +43,19 @@ amd::Memory* getMemoryObject(const void* ptr, size_t& offset, size_t size) {
}
else {
//SVM ptr or device ptr mapped from host
const void *devPtr = reinterpret_cast<void*>
(memObj->getDeviceMemory(*memObj->getContext().devices()[0])->virtualAddress());
if (devPtr != nullptr) {
offset = reinterpret_cast<size_t>(ptr) - reinterpret_cast<size_t>(devPtr);
device::Memory* devMem =
(memObj->getDeviceMemory(*memObj->getContext().devices()[0]));
if (devMem == nullptr) {
return nullptr;
}
else {
ShouldNotReachHere();
const void* devPtr = reinterpret_cast<void*>((devMem)->virtualAddress());
if (devPtr != nullptr) {
offset = reinterpret_cast<size_t>(ptr) - reinterpret_cast<size_t>(devPtr);
}
else {
return nullptr;
}
}
}
} else {