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
2022-09-26 22:40:28 -07:00
коммит произвёл Maneesh Gupta
родитель 08d7b38b0f
Коммит 8ceb2ac5d6
2 изменённых файлов: 14 добавлений и 5 удалений
+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 {