Mesa (master): mesa/st: call memobj_destroy only if there is memory imported

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Nov 3 14:41:43 UTC 2020


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

Author: Tapani Pälli <tapani.palli at intel.com>
Date:   Mon Oct 26 20:51:25 2020 +0200

mesa/st: call memobj_destroy only if there is memory imported

Something may go wrong during import which leaves pointer to null and
when ctx and it's shared state gets destroyed we will attempt to call
memobj_destroy. Instead of forcing every driver to handle it, add check
here.

Fixes crashes with Piglit test:
   ext_external_objects_fd-memory-object-api-errors

Fixes: 99cf9108340 ("mesa/st: Actually free the driver part of memory objects on destruction.")
Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Eleni Maria Stea <estea at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7403>

---

 src/mesa/state_tracker/st_cb_memoryobjects.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mesa/state_tracker/st_cb_memoryobjects.c b/src/mesa/state_tracker/st_cb_memoryobjects.c
index 3ef316a45f8..917e39a91dc 100644
--- a/src/mesa/state_tracker/st_cb_memoryobjects.c
+++ b/src/mesa/state_tracker/st_cb_memoryobjects.c
@@ -59,7 +59,8 @@ st_memoryobj_free(struct gl_context *ctx,
    struct pipe_context *pipe = st->pipe;
    struct pipe_screen *screen = pipe->screen;
 
-   screen->memobj_destroy(screen, st_obj->memory);
+   if (st_obj->memory)
+      screen->memobj_destroy(screen, st_obj->memory);
    _mesa_delete_memory_object(ctx, obj);
 }
 



More information about the mesa-commit mailing list