This patchset LGTM, thanks.

-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf 
Of Zhigang Gong
Sent: Monday, November 25, 2013 1:11 PM
To: [email protected]
Cc: Gong, Zhigang
Subject: [Beignet] [PATCH 1/4] Runtime: fixed parameter error checking in cl 
create buffer.

This patch can pass piglit test case cl-api-create-buffer.

Signed-off-by: Zhigang Gong <[email protected]>
---
 src/cl_mem.c |   26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/src/cl_mem.c b/src/cl_mem.c index 8c9f8a8..8639502 100644
--- a/src/cl_mem.c
+++ b/src/cl_mem.c
@@ -294,10 +294,30 @@ cl_mem_new_buffer(cl_context ctx,
   cl_int err = CL_SUCCESS;
   cl_mem mem = NULL;
 
+  if (UNLIKELY(sz == 0)) {
+    err = CL_INVALID_BUFFER_SIZE;
+    goto error;
+  }
+
+  if (UNLIKELY(((flags & CL_MEM_READ_WRITE)
+                  && (flags & (CL_MEM_READ_ONLY | CL_MEM_WRITE_ONLY)))
+                     || ((flags & CL_MEM_READ_ONLY) && (flags & 
(CL_MEM_WRITE_ONLY)))
+              || ((flags & CL_MEM_ALLOC_HOST_PTR) && (flags & 
CL_MEM_USE_HOST_PTR))
+              || ((flags & CL_MEM_COPY_HOST_PTR) && (flags & 
CL_MEM_USE_HOST_PTR))
+              || ((flags & (~(CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY | 
CL_MEM_READ_ONLY
+                        | CL_MEM_ALLOC_HOST_PTR | CL_MEM_COPY_HOST_PTR
+                        | CL_MEM_USE_HOST_PTR))) != 0))) {
+    err = CL_INVALID_VALUE;
+    goto error;
+  }
+
   /* This flag is valid only if host_ptr is not NULL */
-  if (UNLIKELY((flags & CL_MEM_COPY_HOST_PTR ||
-                flags & CL_MEM_USE_HOST_PTR) &&
-                data == NULL)) {
+  if (UNLIKELY((((flags & CL_MEM_COPY_HOST_PTR) ||
+                (flags & CL_MEM_USE_HOST_PTR)) &&
+                data == NULL))
+               || (!(flags & (CL_MEM_COPY_HOST_PTR
+                            |CL_MEM_USE_HOST_PTR))
+                    && (data != NULL))) {
     err = CL_INVALID_HOST_PTR;
     goto error;
   }
--
1.7.9.5

_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet
_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to