From e02e1ccbeedf0082e0440b557f21ea9bc4c46173 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Mon, 26 Oct 2020 20:51:25 +0200 Subject: [PATCH] mesa/st: call memobj_destroy only if there is memory imported MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Lionel Landwerlin Reviewed-by: Eleni Maria Stea Part-of: --- 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); }