diff --git a/vdi/hip_memory.cpp b/vdi/hip_memory.cpp index bb28106db2..d4be73496d 100755 --- a/vdi/hip_memory.cpp +++ b/vdi/hip_memory.cpp @@ -911,13 +911,13 @@ hipError_t ihipMemcpyAtoD(hipArray* srcArray, hipStream_t stream, bool isAsync = false) { cl_mem srcMemObj = reinterpret_cast(srcArray->data); - if (is_valid(srcMemObj) == false) { + size_t dstOffset = 0; + amd::Memory* dstMemory = getMemoryObject(dstDevice, dstOffset); + if (!is_valid(srcMemObj) || (dstMemory == nullptr)) { return hipErrorInvalidValue; } amd::Image* srcImage = as_amd(srcMemObj)->asImage(); - size_t dstOffset = 0; - amd::Memory* dstMemory = getMemoryObject(dstDevice, dstOffset); amd::BufferRect srcRect; if (!srcRect.create(static_cast(srcOrigin), static_cast(copyRegion), srcImage->getRowPitch(), srcImage->getSlicePitch())) { @@ -970,13 +970,13 @@ hipError_t ihipMemcpyDtoA(void* srcDevice, size_t srcSlicePitch, hipStream_t stream, bool isAsync = false) { + size_t srcOffset = 0; + amd::Memory* srcMemory = getMemoryObject(srcDevice, srcOffset); cl_mem dstMemObj = reinterpret_cast(dstArray->data); - if (is_valid(dstMemObj) == false) { + if ((srcMemory == nullptr) || !is_valid(dstMemObj)) { return hipErrorInvalidValue; } - size_t srcOffset = 0; - amd::Memory* srcMemory = getMemoryObject(srcDevice, srcOffset); amd::Image* dstImage = as_amd(dstMemObj)->asImage(); amd::BufferRect srcRect; @@ -1037,6 +1037,10 @@ hipError_t ihipMemcpyDtoD(void* srcDevice, size_t dstOffset = 0; amd::Memory *dstMemory = getMemoryObject(dstDevice, dstOffset); + if ((srcMemory == nullptr) || (dstMemory == nullptr)) { + return hipErrorInvalidValue; + } + amd::BufferRect srcRect; if (!srcRect.create(static_cast(srcOrigin), static_cast(copyRegion), srcRowPitch, srcSlicePitch)) { return hipErrorInvalidValue; @@ -1101,6 +1105,10 @@ hipError_t ihipMemcpyDtoH(void* srcDevice, size_t srcOffset = 0; amd::Memory *srcMemory = getMemoryObject(srcDevice, srcOffset); + if ((srcMemory == nullptr) || (dstHost == nullptr)) { + return hipErrorInvalidValue; + } + amd::BufferRect srcRect; if (!srcRect.create(static_cast(srcOrigin), static_cast(copyRegion), srcRowPitch, srcSlicePitch)) { return hipErrorInvalidValue; @@ -1156,6 +1164,10 @@ hipError_t ihipMemcpyHtoD(const void* srcHost, size_t dstOffset = 0; amd::Memory *dstMemory = getMemoryObject(dstDevice, dstOffset); + if ((srcHost == nullptr) || (dstMemory == nullptr)) { + return hipErrorInvalidValue; + } + amd::BufferRect srcRect; if (!srcRect.create(static_cast(srcOrigin), static_cast(copyRegion), srcRowPitch, srcSlicePitch)) { return hipErrorInvalidValue; @@ -1206,6 +1218,10 @@ hipError_t ihipMemcpyHtoH(const void* srcHost, size_t srcSlicePitch, size_t dstRowPitch, size_t dstSlicePitch) { + if ((srcHost == nullptr) || (dstHost == nullptr)) { + return hipErrorInvalidValue; + } + amd::BufferRect srcRect; if (!srcRect.create(static_cast(srcOrigin), static_cast(copyRegion), srcRowPitch, srcSlicePitch)) { return hipErrorInvalidValue; @@ -1287,12 +1303,8 @@ hipError_t ihipMemcpyHtoA(const void* srcHost, size_t srcSlicePitch, hipStream_t stream, bool isAsync = false) { - if (srcHost == nullptr) { - return hipErrorInvalidValue; - } - cl_mem dstMemObj = reinterpret_cast(dstArray->data); - if (is_valid(dstMemObj) == false) { + if ((srcHost == nullptr) || !is_valid(dstMemObj)) { return hipErrorInvalidValue; } @@ -1344,11 +1356,7 @@ hipError_t ihipMemcpyAtoH(hipArray* srcArray, hipStream_t stream, bool isAsync = false) { cl_mem srcMemObj = reinterpret_cast(srcArray->data); - if (!is_valid(srcMemObj)) { - return hipErrorInvalidValue; - } - - if (dstHost == nullptr) { + if (!is_valid(srcMemObj) || (dstHost == nullptr)) { return hipErrorInvalidValue; } @@ -1357,7 +1365,6 @@ hipError_t ihipMemcpyAtoH(hipArray* srcArray, return hipErrorInvalidValue; } - amd::Image* srcImage = as_amd(srcMemObj)->asImage(); // HIP assumes the width is in bytes, but OCL assumes it's in pixels. const size_t elementSize = srcImage->getImageFormat().getElementSize();