nv50/ir: fix memory corruption when spilling and redoing RA
authorKarol Herbst <git@karolherbst.de>
Tue, 26 Jan 2016 13:36:04 +0000 (14:36 +0100)
committerIlia Mirkin <imirkin@alum.mit.edu>
Tue, 26 Jan 2016 22:55:06 +0000 (17:55 -0500)
When RA fails, and we spill, we have to clean everything up before doing
RA again. We were forgetting to reset the hi/lo linked lists - at
least the hi list is guaranteed to still have pointers to now-deleted
RIG nodes.

Signed-off-by: Karol Herbst <nouveau@karolherbst.de>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: mesa-stable@lists.freedesktop.org
src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp

index cd8c42ced5e1304c30abdf913d96d5358d24fc35..de39be872e45a3ef41229da33e0a42cc30f02d2c 100644 (file)
@@ -1544,6 +1544,9 @@ GCRA::cleanup(const bool success)
 
    delete[] nodes;
    nodes = NULL;
+   hi.next = hi.prev = &hi;
+   lo[0].next = lo[0].prev = &lo[0];
+   lo[1].next = lo[1].prev = &lo[1];
 }
 
 Symbol *