pan/bi: Fix memory corruption in scheduler
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Sun, 27 Sep 2020 23:45:50 +0000 (19:45 -0400)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Sat, 10 Oct 2020 20:53:07 +0000 (16:53 -0400)
If empty the last will be bogus, I think. Missing Rust hard right around
now.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7081>

src/panfrost/bifrost/bi_schedule.c

index 2ff1d50..a336e5e 100644 (file)
@@ -241,10 +241,11 @@ bi_schedule(bi_context *ctx)
 
                 /* Back-to-back bit affects only the last clause of a block,
                  * the rest are implicitly true */
-                bi_clause *last_clause = list_last_entry(&bblock->clauses, bi_clause, link);
 
-                if (last_clause)
+                if (!list_is_empty(&bblock->clauses)) {
+                        bi_clause *last_clause = list_last_entry(&bblock->clauses, bi_clause, link);
                         last_clause->back_to_back = bi_back_to_back(bblock);
+                }
 
                 bblock->scheduled = true;
         }