From 874f4095c5587becf2dc72d9d89bba34eae39112 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 12 Jan 2022 15:36:13 +0000 Subject: [PATCH] panfrost: Don't double-free when handling error for unsupported GPU Setting the screen ro member before we checked gpu id means the error case leads to a double-free because screen->ro is set and allocated by parent who hanbdles de-alloc a second time after we destroyed the screen we just created because ro was set. Cc: mesa-stable Signed-off-by: Carsten Haitzler Part-of: --- src/gallium/drivers/panfrost/pan_screen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c index 48cdb78056d..8abe47255c4 100644 --- a/src/gallium/drivers/panfrost/pan_screen.c +++ b/src/gallium/drivers/panfrost/pan_screen.c @@ -854,8 +854,6 @@ panfrost_create_screen(int fd, struct renderonly *ro) if (dev->debug & PAN_DBG_NO_AFBC) dev->has_afbc = false; - dev->ro = ro; - /* Check if we're loading against a supported GPU model. */ switch (dev->gpu_id) { @@ -876,6 +874,8 @@ panfrost_create_screen(int fd, struct renderonly *ro) return NULL; } + dev->ro = ro; + screen->base.destroy = panfrost_destroy_screen; screen->base.get_name = panfrost_get_name;