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

Author: Martin Peres <martin.pe...@linux.intel.com>
Date:   Mon Mar 30 10:34:20 2015 +0300

mesa/fbo: lock ctx->Shared->Mutex when allocating renderbuffers

This mutex is used to make sure the shared context does not change
while some shared code is looking into it.

Calling BindRenderbufferEXT BindRenderbuffer with a gles context
would not take the mutex before allocating an entry. Commit a34669b
then moved out the allocation out of bind_renderbuffer into
allocate_renderbuffer before using it for the CreateRenderBuffer
entry point. This thus also made this entry point unsafe.

The issue has been hinted by Ilia Mirkin.

Reviewed-by: Brian Paul <bri...@vmware.com>
Signed-off-by: Martin Peres <martin.pe...@linux.intel.com>

---

 src/mesa/main/fbobject.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 3808b56..8032585 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -1218,8 +1218,10 @@ allocate_renderbuffer(struct gl_context *ctx, GLuint 
renderbuffer,
       return NULL;
    }
    assert(newRb->AllocStorage);
+   mtx_lock(&ctx->Shared->Mutex);
    _mesa_HashInsert(ctx->Shared->RenderBuffers, renderbuffer, newRb);
    newRb->RefCount = 1; /* referenced by hash table */
+   mtx_unlock(&ctx->Shared->Mutex);
 
    return newRb;
 }

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to