[Mesa-dev] [PATCH v2 1/2] egl/dri2: Close file descriptor on error.

Boyan Ding boyan.j.ding at gmail.com
Mon Sep 7 21:03:50 PDT 2015


2015-09-07 16:58 GMT+08:00 Emil Velikov <emil.l.velikov at gmail.com>:
> From: Matt Turner <mattst88 at gmail.com>
>
> v2: [Emil Velikov]
> Rework the error path to a common goto, close only if we own the fd.
>
> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>

Reviewed-by: Boyan Ding <boyan.j.ding at gmail.com>

> ---
>  src/egl/drivers/dri2/platform_drm.c | 27 ++++++++++++++-------------
>  1 file changed, 14 insertions(+), 13 deletions(-)
>
> diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c
> index eda5087..e8fe7ea 100644
> --- a/src/egl/drivers/dri2/platform_drm.c
> +++ b/src/egl/drivers/dri2/platform_drm.c
> @@ -623,26 +623,20 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
>        dri2_dpy->own_device = 1;
>        gbm = gbm_create_device(fd);
>        if (gbm == NULL)
> -         return EGL_FALSE;
> +         goto cleanup;
>     }
>
> -   if (strcmp(gbm_device_get_backend_name(gbm), "drm") != 0) {
> -      free(dri2_dpy);
> -      return EGL_FALSE;
> -   }
> +   if (strcmp(gbm_device_get_backend_name(gbm), "drm") != 0)
> +      goto cleanup;
>
>     dri2_dpy->gbm_dri = gbm_dri_device(gbm);
> -   if (dri2_dpy->gbm_dri->base.type != GBM_DRM_DRIVER_TYPE_DRI) {
> -      free(dri2_dpy);
> -      return EGL_FALSE;
> -   }
> +   if (dri2_dpy->gbm_dri->base.type != GBM_DRM_DRIVER_TYPE_DRI)
> +      goto cleanup;
>
>     if (fd < 0) {
>        fd = fcntl(gbm_device_get_fd(gbm), F_DUPFD_CLOEXEC, 3);
> -      if (fd < 0) {
> -         free(dri2_dpy);
> -         return EGL_FALSE;
> -      }
> +      if (fd < 0)
> +         goto cleanup;
>     }
>
>     dri2_dpy->fd = fd;
> @@ -727,4 +721,11 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
>     dri2_dpy->vtbl = &dri2_drm_display_vtbl;
>
>     return EGL_TRUE;
> +
> +cleanup:
> +   if (dri2_dpy->own_device)
> +      close(fd);
> +
> +   free(dri2_dpy);
> +   return EGL_FALSE;
>  }
> --
> 2.5.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list