[Beignet] [PATCH] Add some pointer access check.
Yang Rong
rong.r.yang at intel.com
Wed Jan 11 10:15:44 UTC 2017
Signed-off-by: Yang Rong <rong.r.yang at intel.com>
---
backend/src/backend/gen_reg_allocation.cpp | 4 ++--
src/cl_command_queue.c | 1 +
src/cl_device_enqueue.c | 3 +++
src/cl_utils.c | 2 +-
4 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/backend/src/backend/gen_reg_allocation.cpp b/backend/src/backend/gen_reg_allocation.cpp
index 68b7a85..d88b316 100644
--- a/backend/src/backend/gen_reg_allocation.cpp
+++ b/backend/src/backend/gen_reg_allocation.cpp
@@ -86,8 +86,8 @@ namespace gbe
INLINE void getRegAttrib(ir::Register reg, uint32_t ®Size, ir::RegisterFamily *regFamily = NULL) const {
// Note that byte vector registers use two bytes per byte (and can be
// interleaved)
- static const size_t familyVectorSize[] = {2,2,2,4,8};
- static const size_t familyScalarSize[] = {2,2,2,4,8};
+ static const size_t familyVectorSize[] = {2,2,2,4,8,16,32};
+ static const size_t familyScalarSize[] = {2,2,2,4,8,16,32};
using namespace ir;
const bool isScalar = ctx.sel->isScalarReg(reg);
const RegisterData regData = ctx.sel->getRegisterData(reg);
diff --git a/src/cl_command_queue.c b/src/cl_command_queue.c
index aa371d0..368e148 100644
--- a/src/cl_command_queue.c
+++ b/src/cl_command_queue.c
@@ -64,6 +64,7 @@ cl_create_command_queue(cl_context ctx, cl_device_id device, cl_command_queue_pr
cl_command_queue queue = cl_command_queue_new(ctx);
if (queue == NULL) {
*errcode_ret = CL_OUT_OF_HOST_MEMORY;
+ return NULL;
}
queue->props = properties;
diff --git a/src/cl_device_enqueue.c b/src/cl_device_enqueue.c
index 18cd7e1..b6932df 100644
--- a/src/cl_device_enqueue.c
+++ b/src/cl_device_enqueue.c
@@ -75,6 +75,7 @@ cl_device_enqueue_bind_buffer(cl_gpgpu gpgpu, cl_kernel ker, uint32_t *max_bti,
}
mem = cl_context_get_svm_from_ptr(ker->program->ctx, ker->device_enqueue_ptr);
+ assert(mem);
cl_gpgpu_bind_buf(gpgpu, mem->bo, offset, 0, buf_size, *max_bti);
cl_gpgpu_set_kernel(gpgpu, ker);
@@ -146,6 +147,7 @@ cl_device_enqueue_parse_result(cl_command_queue queue, cl_gpgpu gpgpu)
type = ndrange_info->type;
dim = (type & 0xf0) >> 4;
type = type & 0xf;
+ assert(dim <= 2);
for(i = 0; i <= dim; i++) {
fixed_global_sz[i] = ndrange_info->global_work_size[i];
if(type > 1)
@@ -161,6 +163,7 @@ cl_device_enqueue_parse_result(cl_command_queue queue, cl_gpgpu gpgpu)
kernel_name = interp_program_get_device_enqueue_kernel_name(ker->program->opaque, block->index);
child_ker = cl_program_create_kernel(ker->program, kernel_name, NULL);
+ assert(child_ker);
cl_kernel_set_arg_svm_pointer(child_ker, 0, block);
int index = 1;
for(i=0; i<slm_size/sizeof(int); i++, index++) {
diff --git a/src/cl_utils.c b/src/cl_utils.c
index bc62feb..38de1ea 100644
--- a/src/cl_utils.c
+++ b/src/cl_utils.c
@@ -76,7 +76,7 @@ cl_get_info_helper(const void *src, size_t src_size, void *dst, size_t dst_size,
if (dst && dst_size < src_size)
return CL_INVALID_VALUE;
- if (dst_size) {
+ if (dst && dst_size) {
memcpy(dst, src, src_size);
}
--
2.1.4
More information about the Beignet
mailing list