diff --git a/projects/clr/hipamd/src/hip_memory.cpp b/projects/clr/hipamd/src/hip_memory.cpp index 1a6272c7f9..7e24fa2e65 100644 --- a/projects/clr/hipamd/src/hip_memory.cpp +++ b/projects/clr/hipamd/src/hip_memory.cpp @@ -150,14 +150,16 @@ hipError_t hipExternalMemoryGetMappedBuffer( const hipExternalMemoryBufferDesc *bufferDesc) { HIP_INIT_API(hipExternalMemoryGetMappedBuffer, devPtr, extMem, bufferDesc); - if (extMem == nullptr) { + if (devPtr == nullptr || extMem == nullptr || bufferDesc == nullptr || bufferDesc->flags != 0) { HIP_RETURN(hipErrorInvalidValue); } amd::BufferVk *buf = reinterpret_cast(extMem); const device::Memory* devMem = buf->getDeviceMemory(*hip::getCurrentDevice()->devices()[0]); - if (devMem != nullptr) { - *devPtr = reinterpret_cast(devMem->virtualAddress()); + + if (devMem == nullptr || ((bufferDesc->offset + bufferDesc->size) > devMem->size())) { + HIP_RETURN(hipErrorInvalidValue); } + *devPtr = reinterpret_cast(devMem->virtualAddress() + bufferDesc->offset); HIP_RETURN(hipSuccess); }