Module: Mesa
Branch: master
Commit: 1e247511e54767667a0a9ac0c06f3206beb005af
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1e247511e54767667a0a9ac0c06f3206beb005af

Author: Nicolai Hähnle <[email protected]>
Date:   Sat Aug 26 03:06:09 2017 +0200

util/ralloc: set prev-pointers correctly in ralloc_adopt

Found by inspection.

I'm not aware of any actual failures caused by this, but a precise
sequence of ralloc_adopt and ralloc_free should be able to cause
problems.

v2: make the code slightly clearer (Eric)

Reviewed-by: Eric Engestrom <[email protected]>

---

 src/util/ralloc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/util/ralloc.c b/src/util/ralloc.c
index bf46439df4..566f08ad94 100644
--- a/src/util/ralloc.c
+++ b/src/util/ralloc.c
@@ -311,10 +311,12 @@ ralloc_adopt(const void *new_ctx, void *old_ctx)
    for (child = old_info->child; child->next != NULL; child = child->next) {
       child->parent = new_info;
    }
+   child->parent = new_info;
 
    /* Connect the two lists together; parent them to new_ctx; make old_ctx 
empty. */
    child->next = new_info->child;
-   child->parent = new_info;
+   if (child->next)
+      child->next->prev = child;
    new_info->child = old_info->child;
    old_info->child = NULL;
 }

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to