fix fd leak 60/239060/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 21 Jul 2020 11:09:59 +0000 (20:09 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Tue, 21 Jul 2020 11:09:59 +0000 (20:09 +0900)
Change-Id: I14dc83016110982c205a185246b7c20731bb4835

src/tbm_bufmgr_vigs.c

index 7cc4957..e72e4f1 100755 (executable)
@@ -804,6 +804,7 @@ tbm_vigs_init(tbm_bufmgr bufmgr, tbm_error_e *error)
        int drm_fd = -1;
        tbm_error_e err;
        char buf[STRERR_BUFSIZE];
+       int set_master;
 
        TBM_DBG("enter");
 
@@ -835,6 +836,7 @@ tbm_vigs_init(tbm_bufmgr bufmgr, tbm_error_e *error)
 
                if (drmIsMaster(drm_fd)) {
                        tbm_drm_helper_set_tbm_master_fd(drm_fd);
+                       set_master = 1;
                        TBM_INFO("This is Master FD(%d) from open_drm.", drm_fd);
                } else {
                        /* close the fd and get the authenticated fd from the master fd */
@@ -933,7 +935,7 @@ fail_register_bufmgr_func:
 fail_alloc_bufmgr_func:
        vigs_drm_device_destroy(drm_dev);
 fail_create_vigs_drm_device:
-       if (tbm_drm_helper_get_master_fd() >= 0)
+       if (set_master)
                tbm_drm_helper_unset_tbm_master_fd();
        if (drm_fd >= 0)
                close(drm_fd);