Handle copy cases where the uses pases a bad ptr

Change-Id: I4490b8519e4d0dde25b845f9ca7e81c1d80d4f28
Этот коммит содержится в:
Vlad Sytchenko
2020-04-27 16:57:49 -04:00
коммит произвёл Vladislav Sytchenko
родитель b75b602601
Коммит cf52b5fca4
+24 -17
Просмотреть файл
@@ -911,13 +911,13 @@ hipError_t ihipMemcpyAtoD(hipArray* srcArray,
hipStream_t stream,
bool isAsync = false) {
cl_mem srcMemObj = reinterpret_cast<cl_mem>(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<size_t*>(srcOrigin), static_cast<size_t*>(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<cl_mem>(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<size_t*>(srcOrigin), static_cast<size_t*>(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<size_t*>(srcOrigin), static_cast<size_t*>(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<size_t*>(srcOrigin), static_cast<size_t*>(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<size_t*>(srcOrigin), static_cast<size_t*>(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<cl_mem>(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<cl_mem>(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();