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

Author: Lionel Landwerlin <[email protected]>
Date:   Wed Jul 18 17:39:19 2018 +0100

intel: tools: aubwrite: fix invalid frees on finish

Signed-off-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Jordan Justen <[email protected]>

---

 src/intel/tools/aub_write.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/intel/tools/aub_write.c b/src/intel/tools/aub_write.c
index 07f38b97d4..6fb99feb00 100644
--- a/src/intel/tools/aub_write.c
+++ b/src/intel/tools/aub_write.c
@@ -255,11 +255,16 @@ align_u32(uint32_t v, uint32_t a)
 }
 
 static void
-aub_ppgtt_table_finish(struct aub_ppgtt_table *table)
+aub_ppgtt_table_finish(struct aub_ppgtt_table *table, int level)
 {
+   if (level == 1)
+      return;
+
    for (unsigned i = 0; i < ARRAY_SIZE(table->subtables); i++) {
-      aub_ppgtt_table_finish(table->subtables[i]);
-      free(table->subtables[i]);
+      if (table->subtables[i]) {
+         aub_ppgtt_table_finish(table->subtables[i], level - 1);
+         free(table->subtables[i]);
+      }
    }
 }
 
@@ -280,7 +285,7 @@ aub_file_init(struct aub_file *aub, FILE *file, uint16_t 
pci_id)
 void
 aub_file_finish(struct aub_file *aub)
 {
-   aub_ppgtt_table_finish(&aub->pml4);
+   aub_ppgtt_table_finish(&aub->pml4, 4);
    fclose(aub->file);
 }
 

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

Reply via email to