From: Danylo Piliaiev Date: Fri, 22 May 2020 10:36:31 +0000 (+0300) Subject: mesa: Fix double-lock of Shared->FrameBuffers and usage of wrong mutex X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=40255831230a6dba45b09ab98d5b626a5bdb18ef;p=mesa.git mesa: Fix double-lock of Shared->FrameBuffers and usage of wrong mutex Fixes: 7534c536ca0f4b2b123200f421460094034f37a3 Fixes: 8cfb3e4ee57070ff45e7534a986a20c5fd649dc7 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3024 Signed-off-by: Danylo Piliaiev Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 3d35b9bdc33..298a6b35d0a 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -174,21 +174,16 @@ _mesa_lookup_framebuffer_dsa(struct gl_context *ctx, GLuint id, /* Name exists but buffer is not initialized */ if (fb == &DummyFramebuffer) { fb = ctx->Driver.NewFramebuffer(ctx, id); - _mesa_HashLockMutex(ctx->Shared->FrameBuffers); _mesa_HashInsert(ctx->Shared->FrameBuffers, id, fb); - _mesa_HashUnlockMutex(ctx->Shared->BufferObjects); } /* Name doesn't exist */ else if (!fb) { - _mesa_HashLockMutex(ctx->Shared->FrameBuffers); fb = ctx->Driver.NewFramebuffer(ctx, id); if (!fb) { - _mesa_HashUnlockMutex(ctx->Shared->FrameBuffers); _mesa_error(ctx, GL_OUT_OF_MEMORY, "%s", func); return NULL; } - _mesa_HashInsertLocked(ctx->Shared->BufferObjects, id, fb); - _mesa_HashUnlockMutex(ctx->Shared->BufferObjects); + _mesa_HashInsert(ctx->Shared->FrameBuffers, id, fb); } return fb; } @@ -4764,9 +4759,7 @@ lookup_named_framebuffer_ext_dsa(struct gl_context *ctx, GLuint framebuffer, con /* Then, make sure it's initialized */ if (fb == &DummyFramebuffer) { fb = ctx->Driver.NewFramebuffer(ctx, framebuffer); - _mesa_HashLockMutex(ctx->Shared->FrameBuffers); _mesa_HashInsert(ctx->Shared->FrameBuffers, framebuffer, fb); - _mesa_HashUnlockMutex(ctx->Shared->BufferObjects); } } else