[Mesa-dev] [PATCH] r600g/compute: Fix bug in compute memory pool

Tom Stellard tom at stellard.net
Tue Aug 27 08:17:22 PDT 2013


From: Tom Stellard <thomas.stellard at amd.com>

When adding a new buffer to the beginning of the memory pool, we were
accidentally deleting the buffer that was first in the buffer list.
This was caused by a bug in the memory pool's linked list
implementation.
---
 src/gallium/drivers/r600/compute_memory_pool.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/r600/compute_memory_pool.c b/src/gallium/drivers/r600/compute_memory_pool.c
index 454af90..4846bfe 100644
--- a/src/gallium/drivers/r600/compute_memory_pool.c
+++ b/src/gallium/drivers/r600/compute_memory_pool.c
@@ -337,14 +337,9 @@ void compute_memory_finalize_pending(struct compute_memory_pool* pool,
 				}
 			} else {
 				/* Add item to the front of the list */
-				item->next = pool->item_list->next;
-				if (pool->item_list->next) {
-					pool->item_list->next->prev = item;
-				}
+				item->next = pool->item_list;
 				item->prev = pool->item_list->prev;
-				if (pool->item_list->prev) {
-					pool->item_list->prev->next = item;
-				}
+				pool->item_list->prev = item;
 				pool->item_list = item;
 			}
 		}
-- 
1.7.11.4



More information about the mesa-dev mailing list