fix fd leak 56/239056/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 21 Jul 2020 11:04:27 +0000 (20:04 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Tue, 21 Jul 2020 11:06:26 +0000 (20:06 +0900)
Change-Id: Ife4e41a03b753264c45314a9248196cb2e6f3fe5

src/tbm_bufmgr_vc4.c

index 690a4ae..c8a436e 100644 (file)
@@ -2185,6 +2185,7 @@ tbm_vc4_init(tbm_bufmgr bufmgr, tbm_error_e *error)
        tbm_backend_bo_func *bo_func = NULL;
        int fp;
        tbm_error_e err;
+       int set_master = 0;
 
        if (!bufmgr) {
                TBM_ERR("bufmgr is null.\n");
@@ -2213,6 +2214,7 @@ tbm_vc4_init(tbm_bufmgr bufmgr, tbm_error_e *error)
                }
                if (drmIsMaster(bufmgr_vc4->fd)) {
                        tbm_drm_helper_set_tbm_master_fd(bufmgr_vc4->fd);
+                       set_master = 1;
 
                        bufmgr_vc4->device_name = drmGetDeviceNameFromFd(bufmgr_vc4->fd);
                        if (!bufmgr_vc4->device_name) {
@@ -2361,10 +2363,9 @@ fail_alloc_bufmgr_func:
        if (bufmgr_vc4->hashBos)
                drmHashDestroy(bufmgr_vc4->hashBos);
 fail_init_cache_state:
-       if (tbm_drm_helper_get_master_fd() >= 0)
+       if (set_master)
                tbm_drm_helper_unset_tbm_master_fd();
-       else
-               tbm_drm_helper_unset_fd();
+       tbm_drm_helper_unset_fd();
 fail_get_device_name:
        close(bufmgr_vc4->fd);
 fail_get_auth_info: