From a8da5a0c0d67e77c930732af63173770724b9b1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 18 May 2023 16:50:50 -0400 Subject: [PATCH] mesa: fix a VBO buffer reference leak in _mesa_bind_vertex_buffer Fixes: 03ba57c6c53214b19 - mesa: extend _mesa_bind_vertex_buffer to take ownership of the buffer reference Reviewed-by: Yogesh Mohan Marimuthu Part-of: (cherry picked from commit ce3edf51bef1ef7b964deb1ad6fe6ad886f3524f) --- .pick_status.json | 2 +- src/mesa/main/varray.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index f0fc5fb40cb..5f784e55b2f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -760,7 +760,7 @@ "description": "mesa: fix a VBO buffer reference leak in _mesa_bind_vertex_buffer", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "03ba57c6c53214b19aa0fdb66c680f2cadc3bbd9" }, diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index a74bbcbe0a0..d09eb086d59 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -304,6 +304,12 @@ _mesa_bind_vertex_buffer(struct gl_context *ctx, } vao->NonDefaultStateMask |= BITFIELD_BIT(index); + } else { + /* Since this function owns the vbo reference, it must release it if it + * doesn't use it. + */ + if (take_vbo_ownership) + _mesa_reference_buffer_object(ctx, &vbo, NULL); } }