st/mesa: release EGLImage on EGLImageTarget* error
authorPhilipp Zabel <p.zabel@pengutronix.de>
Fri, 30 Jun 2017 08:39:53 +0000 (10:39 +0200)
committerLucas Stach <l.stach@pengutronix.de>
Tue, 4 Jul 2017 09:05:40 +0000 (11:05 +0200)
The smapi->get_egl_image() call in st_egl_image_get_surface() stores a
reference to the EGLImage's texture in stimg.texture. That reference is
released via pipe_resource_reference(&stimg.texture, NULL) before stimg
goes out of scope at the end of the function, but not in the error path
if !is_format_supported().

Fixes: 83e9de25f325 ("st/mesa: EGLImageTarget* error handling")
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/state_tracker/st_cb_eglimage.c

index 0f649f4ab43b9cd2fe5194878dbc934297653ad7..4b7b85db708aefaf7a1cdaa6f01f3197141b4aa5 100644 (file)
@@ -96,6 +96,7 @@ st_egl_image_get_surface(struct gl_context *ctx, GLeglImageOES image_handle,
 
    if (!is_format_supported(screen, stimg.format, stimg.texture->nr_samples, usage)) {
       /* unable to specify a texture object using the specified EGL image */
+      pipe_resource_reference(&stimg.texture, NULL);
       _mesa_error(ctx, GL_INVALID_OPERATION, "%s(format not supported)", error);
       return NULL;
    }