fix fd leak 61/239061/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 21 Jul 2020 11:12:57 +0000 (20:12 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Tue, 21 Jul 2020 11:12:57 +0000 (20:12 +0900)
Change-Id: Ia628374918dea3e4dc4c6c39e9baed82472ef170

src/tbm_bufmgr_dumb.c

index bcff466..32f2a06 100644 (file)
@@ -1425,6 +1425,7 @@ tbm_dumb_init(tbm_bufmgr bufmgr, tbm_error_e *error)
        tbm_backend_bufmgr_func *bufmgr_func = NULL;
        tbm_backend_bo_func *bo_func = NULL;
        int fp;
+       int set_master = 0;
        tbm_error_e err;
        uint64_t cap = 0;
        uint32_t ret;
@@ -1459,6 +1460,7 @@ tbm_dumb_init(tbm_bufmgr bufmgr, tbm_error_e *error)
 
                if (drmIsMaster(bufmgr_dumb->fd)) {
                        tbm_drm_helper_set_tbm_master_fd(bufmgr_dumb->fd);
+                       set_master = 1;
 
                        bufmgr_dumb->device_name = drmGetDeviceNameFromFd(bufmgr_dumb->fd);
                        if (!bufmgr_dumb->device_name) {
@@ -1597,10 +1599,9 @@ fail_alloc_bufmgr_func:
                free(bufmgr_dumb->device_name);
 fail_get_cap:
 fail_get_device_name:
-       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();
        if (bufmgr_dumb->fd >= 0)
                close(bufmgr_dumb->fd);
 fail_get_auth_info: