Skip to content

Commit 1250ad6

Browse files
authored
Address SDL issues (#613)
* Address SDL issues This change tries to address below SDL issues: T31: Validate all forms of input T159: Follow best practices for secure error and exception handling
1 parent 1619b2d commit 1250ad6

File tree

2 files changed

+34
-9
lines changed

2 files changed

+34
-9
lines changed

lib/ExecutionEngine/LEVELZERORUNTIME/LevelZeroRuntimeWrappers.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ static void *allocDeviceMemory(GPUL0QUEUE *queue, size_t size, size_t alignment,
203203
}
204204

205205
static void deallocDeviceMemory(GPUL0QUEUE *queue, void *ptr) {
206-
zeMemFree(queue->zeContext_, ptr);
206+
CHECK_ZE_RESULT(zeMemFree(queue->zeContext_, ptr));
207207
}
208208

209209
static ze_module_handle_t loadModule(GPUL0QUEUE *queue, const void *data,

lib/ExecutionEngine/SYCLRUNTIME/SyclRuntimeWrappers.cpp

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ static void *allocDeviceMemory(GPUSYCLQUEUE *queue, size_t size,
136136
} else {
137137
memPtr = sycl::aligned_alloc_device(alignment, size, queue->syclQueue_);
138138
}
139+
if (memPtr == nullptr) {
140+
throw std::runtime_error(
141+
"aligned_alloc_shared() failed to allocate memory!");
142+
}
139143
return memPtr;
140144
}
141145

@@ -277,35 +281,56 @@ extern "C" SYCL_RUNTIME_EXPORT void gpuStreamDestroy(GPUSYCLQUEUE *queue) {
277281

278282
extern "C" SYCL_RUNTIME_EXPORT void *
279283
gpuMemAlloc(GPUSYCLQUEUE *queue, size_t size, size_t alignment, bool isShared) {
280-
return catchAll(
281-
[&]() { return allocDeviceMemory(queue, size, alignment, isShared); });
284+
return catchAll([&]() {
285+
if (queue) {
286+
return allocDeviceMemory(queue, size, alignment, isShared);
287+
}
288+
});
282289
}
283290

284291
extern "C" SYCL_RUNTIME_EXPORT void gpuMemFree(GPUSYCLQUEUE *queue, void *ptr) {
285-
catchAll([&]() { deallocDeviceMemory(queue, ptr); });
292+
catchAll([&]() {
293+
if (queue && ptr) {
294+
deallocDeviceMemory(queue, ptr);
295+
}
296+
});
286297
}
287298

288299
extern "C" SYCL_RUNTIME_EXPORT ze_module_handle_t
289300
gpuModuleLoad(GPUSYCLQUEUE *queue, const void *data, size_t dataSize) {
290-
return catchAll([&]() { return loadModule(queue, data, dataSize); });
301+
return catchAll([&]() {
302+
if (queue) {
303+
return loadModule(queue, data, dataSize);
304+
}
305+
});
291306
}
292307

293308
extern "C" SYCL_RUNTIME_EXPORT sycl::kernel *
294309
gpuKernelGet(GPUSYCLQUEUE *queue, ze_module_handle_t module, const char *name) {
295-
return catchAll([&]() { return getKernel(queue, module, name); });
310+
return catchAll([&]() {
311+
if (queue) {
312+
return getKernel(queue, module, name);
313+
}
314+
});
296315
}
297316

298317
extern "C" SYCL_RUNTIME_EXPORT void
299318
gpuLaunchKernel(GPUSYCLQUEUE *queue, sycl::kernel *kernel, size_t gridX,
300319
size_t gridY, size_t gridZ, size_t blockX, size_t blockY,
301320
size_t blockZ, size_t sharedMemBytes, void *params) {
302321
return catchAll([&]() {
303-
launchKernel(queue, kernel, gridX, gridY, gridZ, blockX, blockY, blockZ,
304-
sharedMemBytes, static_cast<ParamDesc *>(params));
322+
if (queue) {
323+
launchKernel(queue, kernel, gridX, gridY, gridZ, blockX, blockY, blockZ,
324+
sharedMemBytes, static_cast<ParamDesc *>(params));
325+
}
305326
});
306327
}
307328

308329
extern "C" SYCL_RUNTIME_EXPORT void gpuWait(GPUSYCLQUEUE *queue) {
309330

310-
catchAll([&]() { queue->syclQueue_.wait(); });
331+
catchAll([&]() {
332+
if (queue) {
333+
queue->syclQueue_.wait();
334+
}
335+
});
311336
}

0 commit comments

Comments
 (0)