[Beignet] [PATCH] fix pointer bugs in linked list

Yang, Rong R rong.r.yang at intel.com
Mon Nov 4 08:36:26 CET 2013


LGTM, thanks.

-----Original Message-----
From: beignet-bounces at lists.freedesktop.org [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of Homer Hsing
Sent: Friday, November 01, 2013 1:54 PM
To: beignet at lists.freedesktop.org
Subject: [Beignet] [PATCH] fix pointer bugs in linked list

change the header of linked list if the header was deleted

Signed-off-by: Homer Hsing <homer.xing at intel.com>
---
 src/cl_command_queue.c | 4 ++--
 src/cl_mem.c           | 4 ++--
 src/cl_program.c       | 4 ++--
 src/cl_sampler.c       | 4 ++--
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/cl_command_queue.c b/src/cl_command_queue.c index 13789f6..768ef0c 100644
--- a/src/cl_command_queue.c
+++ b/src/cl_command_queue.c
@@ -77,8 +77,8 @@ cl_command_queue_delete(cl_command_queue queue)
       queue->prev->next = queue->next;
     if (queue->next)
       queue->next->prev = queue->prev;
-    if (queue->next == NULL && queue->prev == NULL)
-      queue->ctx->queues = NULL;
+    if (queue->ctx->queues == queue)
+      queue->ctx->queues = queue->next;
   pthread_mutex_unlock(&queue->ctx->queue_lock);
   if (queue->fulsim_out != NULL) {
     cl_mem_delete(queue->fulsim_out);
diff --git a/src/cl_mem.c b/src/cl_mem.c index 5e70ef1..b4c709d 100644
--- a/src/cl_mem.c
+++ b/src/cl_mem.c
@@ -556,8 +556,8 @@ cl_mem_delete(cl_mem mem)
       mem->prev->next = mem->next;
     if (mem->next)
       mem->next->prev = mem->prev;
-    if (mem->prev == NULL && mem->next == NULL)
-      mem->ctx->buffers = NULL;
+    if (mem->ctx->buffers == mem)
+      mem->ctx->buffers = mem->next;
   pthread_mutex_unlock(&mem->ctx->buffer_lock);
   cl_context_delete(mem->ctx);
 
diff --git a/src/cl_program.c b/src/cl_program.c index b0c29bf..b8da052 100644
--- a/src/cl_program.c
+++ b/src/cl_program.c
@@ -79,8 +79,8 @@ cl_program_delete(cl_program p)
       p->prev->next = p->next;
     if (p->next)
       p->next->prev = p->prev;
-    if (p->prev == NULL && p->next == NULL)
-      p->ctx->programs = NULL;
+    if (p->ctx->programs == p)
+      p->ctx->programs = p->next;
   pthread_mutex_unlock(&p->ctx->program_lock);
 
   cl_free(p->bin);               /* Free the blob */
diff --git a/src/cl_sampler.c b/src/cl_sampler.c index b3f7045..3e7961f 100644
--- a/src/cl_sampler.c
+++ b/src/cl_sampler.c
@@ -125,8 +125,8 @@ cl_sampler_delete(cl_sampler sampler)
       sampler->prev->next = sampler->next;
     if (sampler->next)
       sampler->next->prev = sampler->prev;
-    if (sampler->prev == NULL && sampler->next == NULL)
-      sampler->ctx->samplers = NULL;
+    if (sampler->ctx->samplers == sampler)
+      sampler->ctx->samplers = sampler->next;
   pthread_mutex_unlock(&sampler->ctx->sampler_lock);
   cl_context_delete(sampler->ctx);
 
--
1.8.3.2

_______________________________________________
Beignet mailing list
Beignet at lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list