[Mesa-dev] [PATCH 04/10] gbm: handle queryImage() failure for GBM_BO_IMPORT_EGL_IMAGE
Emil Velikov
emil.l.velikov at gmail.com
Mon Oct 16 16:04:06 UTC 2017
From: Emil Velikov <emil.velikov at collabora.com>
The function can fail. Check and teardown accordingly.
Fixes: a43d286ef7f ("gbm: Add import from fd")
Cc: Kristian Høgsberg <krh at bitplanet.net>
Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
---
src/gbm/backends/dri/gbm_dri.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index 4a51bd39903..9c9066e6661 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -891,6 +891,7 @@ gbm_dri_bo_import(struct gbm_device *gbm,
__DRIimage *image;
unsigned dri_use = 0;
int gbm_format;
+ unsigned query; /* EGLBoolean, but we cannot include the header */
/* Required for query image WIDTH & HEIGHT */
if (dri->image == NULL || dri->image->base.version < 4) {
@@ -934,7 +935,12 @@ gbm_dri_bo_import(struct gbm_device *gbm,
image = dri->lookup_image(dri->screen, buffer, dri->lookup_user_data);
image = dri->image->dupImage(image, NULL);
- dri->image->queryImage(image, __DRI_IMAGE_ATTRIB_FORMAT, &dri_format);
+ query = dri->image->queryImage(image, __DRI_IMAGE_ATTRIB_FORMAT, &dri_format);
+ if (!query) {
+ errno = EINVAL;
+ dri->image->destroyImage(image);
+ break;
+ }
gbm_format = gbm_dri_to_gbm_format(dri_format);
if (gbm_format == 0) {
errno = EINVAL;
--
2.14.1
More information about the mesa-dev
mailing list