panfrost: Fix various leaks unmapping resources

v2: Don't check for NULL before free()

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
This commit is contained in:
Alyssa Rosenzweig
2019-02-14 06:17:19 +00:00
parent 535251487b
commit b5a01296f4
2 changed files with 14 additions and 9 deletions

View File

@@ -287,16 +287,18 @@ panfrost_destroy_bo(struct panfrost_screen *screen, struct panfrost_bo *pbo)
{
struct panfrost_bo *bo = (struct panfrost_bo *)pbo;
if (bo->entry[0] != NULL) {
/* Most allocations have an entry to free */
bo->entry[0]->freed = true;
pb_slab_free(&screen->slabs, &bo->entry[0]->base);
for (int l = 0; l < MAX_MIP_LEVELS; ++l) {
if (bo->entry[l] != NULL) {
/* Most allocations have an entry to free */
bo->entry[l]->freed = true;
pb_slab_free(&screen->slabs, &bo->entry[l]->base);
}
}
if (bo->tiled) {
/* Tiled has a malloc'd CPU, so just plain ol' free needed */
for (int l = 0; bo->cpu[l]; l++) {
for (int l = 0; l < MAX_MIP_LEVELS; ++l) {
free(bo->cpu[l]);
}
}
@@ -509,9 +511,10 @@ panfrost_slab_can_reclaim(void *priv, struct pb_slab_entry *entry)
static void
panfrost_slab_free(void *priv, struct pb_slab *slab)
{
/* STUB */
//struct panfrost_memory *mem = (struct panfrost_memory *) slab;
printf("stub: Tried to free slab\n");
struct panfrost_memory *mem = (struct panfrost_memory *) slab;
struct panfrost_screen *screen = (struct panfrost_screen *) priv;
screen->driver->free_slab(screen, mem);
}
static void

View File

@@ -58,7 +58,9 @@ struct panfrost_driver {
int extra_flags,
int commit_count,
int extent);
void (*enable_counters) (struct panfrost_screen *screen);
void (*free_slab) (struct panfrost_screen *screen,
struct panfrost_memory *mem);
void (*enable_counters) (struct panfrost_screen *screen);
};
struct panfrost_screen {