mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
mesa: Fix double-lock of Shared->FrameBuffers and usage of wrong mutex
Fixes:7534c536caFixes:8cfb3e4ee5Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3024 Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com> Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5160> (cherry picked from commit4025583123)
This commit is contained in:
parent
1a6c365774
commit
c10e0616ed
2 changed files with 2 additions and 9 deletions
|
|
@ -1363,7 +1363,7 @@
|
|||
"description": "mesa: Fix double-lock of Shared->FrameBuffers and usage of wrong mutex",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "7534c536ca0f4b2b123200f421460094034f37a3"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue