Mesa (main): zink: fix crash on dlclose when zink_internal_create_screen failed
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri May 13 20:03:52 UTC 2022
Module: Mesa
Branch: main
Commit: 6c1acd9301f99495494e066bf30374e453316d03
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6c1acd9301f99495494e066bf30374e453316d03
Author: Greg Depoire--Ferrer <greg.depoire at gmail.com>
Date: Fri Feb 18 01:12:49 2022 +0100
zink: fix crash on dlclose when zink_internal_create_screen failed
When zink_internal_create_screen fails, it forgot to destroy the
flush queue but still deallocated the memory for it. Then the
automatic destructor that runs when library is unloaded was accessing
freed memory and crashing.
Signed-off-by: Greg Depoire--Ferrer <greg.depoire at gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15071>
---
src/gallium/drivers/zink/zink_screen.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index 02505bc86ea..eaff4f27a12 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -2280,6 +2280,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config)
fail:
if (screen->loader_lib)
util_dl_close(screen->loader_lib);
+ if (screen->threaded)
+ util_queue_destroy(&screen->flush_queue);
ralloc_free(screen);
return NULL;
More information about the mesa-commit
mailing list