Skip to content

Commit 64a14c8

Browse files
committed
check ZE_MEMORY_TYPE_DEVICE, error check
1 parent bdd31cc commit 64a14c8

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

source/adapters/level_zero/image.cpp

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,10 @@ UR_APIEXPORT ur_result_t UR_APICALL urUSMPitchedAllocExp(
552552
size_t *pResultPitch) {
553553
std::shared_lock<ur_shared_mutex> Lock(hContext->Mutex);
554554

555+
UR_ASSERT(hContext && hDevice, UR_RESULT_ERROR_INVALID_NULL_HANDLE);
556+
UR_ASSERT(widthInBytes != 0, UR_RESULT_ERROR_INVALID_USM_SIZE);
557+
UR_ASSERT(ppMem && pResultPitch, UR_RESULT_ERROR_INVALID_NULL_POINTER);
558+
555559
static std::once_flag InitFlag;
556560
std::call_once(InitFlag, [&]() {
557561
ze_driver_handle_t DriverHandle = hContext->getPlatform()->ZeDriver;
@@ -606,6 +610,10 @@ UR_APIEXPORT ur_result_t UR_APICALL urBindlessImagesImageAllocateExp(
606610
ur_exp_image_mem_handle_t *phImageMem) {
607611
std::shared_lock<ur_shared_mutex> Lock(hContext->Mutex);
608612

613+
UR_ASSERT(hContext && hDevice, UR_RESULT_ERROR_INVALID_NULL_HANDLE);
614+
UR_ASSERT(pImageFormat && pImageDesc && phImageMem,
615+
UR_RESULT_ERROR_INVALID_NULL_POINTER);
616+
609617
ZeStruct<ze_image_desc_t> ZeImageDesc;
610618
UR_CALL(ur2zeImageDesc(pImageFormat, pImageDesc, ZeImageDesc));
611619

@@ -641,6 +649,11 @@ UR_APIEXPORT ur_result_t UR_APICALL urBindlessImagesUnsampledImageCreateExp(
641649
ur_exp_image_handle_t *phImage) {
642650
std::shared_lock<ur_shared_mutex> Lock(hContext->Mutex);
643651

652+
UR_ASSERT(hContext && hDevice && hImageMem,
653+
UR_RESULT_ERROR_INVALID_NULL_HANDLE);
654+
UR_ASSERT(pImageFormat && pImageDesc && phMem && phImage,
655+
UR_RESULT_ERROR_INVALID_NULL_POINTER);
656+
644657
ZeStruct<ze_image_desc_t> ZeImageDesc;
645658
UR_CALL(ur2zeImageDesc(pImageFormat, pImageDesc, ZeImageDesc));
646659

@@ -669,7 +682,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urBindlessImagesUnsampledImageCreateExp(
669682
ZeImage = UrImage->ZeImage;
670683
*phMem = nullptr;
671684
}
672-
} else {
685+
} else if (MemAllocProperties.type == ZE_MEMORY_TYPE_DEVICE) {
673686
ze_image_pitched_exp_desc_t PitchedDesc;
674687
PitchedDesc.stype = ZE_STRUCTURE_TYPE_PITCHED_IMAGE_EXP_DESC;
675688
PitchedDesc.pNext = nullptr;
@@ -688,6 +701,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urBindlessImagesUnsampledImageCreateExp(
688701
(hContext->ZeContext, hDevice->ZeDevice, ZeImage));
689702
UR_CALL(createUrMemFromZeImage(hContext, ZeImage, /*OwnZeMemHandle*/ true,
690703
ZeImageDesc, phMem));
704+
} else {
705+
return UR_RESULT_ERROR_INVALID_VALUE;
691706
}
692707

693708
static std::once_flag InitFlag;
@@ -741,6 +756,15 @@ UR_APIEXPORT ur_result_t UR_APICALL urBindlessImagesImageCopyExp(
741756
ur_rect_region_t hostExtent, uint32_t numEventsInWaitList,
742757
const ur_event_handle_t *phEventWaitList, ur_event_handle_t *phEvent) {
743758
std::scoped_lock<ur_shared_mutex> Lock(hQueue->Mutex);
759+
760+
UR_ASSERT(hQueue, UR_RESULT_ERROR_INVALID_NULL_HANDLE);
761+
UR_ASSERT(pDst && pSrc && pImageFormat && pImageDesc,
762+
UR_RESULT_ERROR_INVALID_NULL_POINTER);
763+
UR_ASSERT(!(UR_EXP_IMAGE_COPY_FLAGS_MASK & imageCopyFlags),
764+
UR_RESULT_ERROR_INVALID_ENUMERATION);
765+
UR_ASSERT(!(pImageDesc && UR_MEM_TYPE_IMAGE1D_BUFFER < pImageDesc->type),
766+
UR_RESULT_ERROR_INVALID_IMAGE_FORMAT_DESCRIPTOR);
767+
744768
ZeStruct<ze_image_desc_t> ZeImageDesc;
745769
UR_CALL(ur2zeImageDesc(pImageFormat, pImageDesc, ZeImageDesc));
746770

@@ -843,6 +867,11 @@ UR_APIEXPORT ur_result_t UR_APICALL urBindlessImagesImageCopyExp(
843867
UR_APIEXPORT ur_result_t UR_APICALL urBindlessImagesImageGetInfoExp(
844868
ur_exp_image_mem_handle_t hImageMem, ur_image_info_t propName,
845869
void *pPropValue, size_t *pPropSizeRet) {
870+
UR_ASSERT(hImageMem, UR_RESULT_ERROR_INVALID_NULL_HANDLE);
871+
UR_ASSERT(UR_IMAGE_INFO_DEPTH >= propName,
872+
UR_RESULT_ERROR_INVALID_ENUMERATION);
873+
UR_ASSERT(pPropValue || pPropSizeRet, UR_RESULT_ERROR_INVALID_NULL_POINTER);
874+
846875
auto *UrImage = reinterpret_cast<_ur_image *>(hImageMem);
847876
ze_image_desc_t &Desc = UrImage->ZeImageDesc;
848877
switch (propName) {

0 commit comments

Comments
 (0)