fix fd leak 58/239058/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 21 Jul 2020 11:08:42 +0000 (20:08 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Tue, 21 Jul 2020 11:08:42 +0000 (20:08 +0900)
Change-Id: I3d048d776c57a71332c7f030bba5809c8d3c01d4

src/tbm_bufmgr_exynos.c

index 8fdd90e..0e1e3ca 100644 (file)
@@ -1993,6 +1993,7 @@ tbm_exynos_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;
        char *value = NULL;
 
        if (!bufmgr) {
@@ -2023,6 +2024,7 @@ tbm_exynos_init(tbm_bufmgr bufmgr, tbm_error_e *error)
 
                if (drmIsMaster(bufmgr_exynos->fd)) {
                        tbm_drm_helper_set_tbm_master_fd(bufmgr_exynos->fd);
+                       set_master = 1;
 
                        bufmgr_exynos->device_name = drmGetDeviceNameFromFd(bufmgr_exynos->fd);
                        if (!bufmgr_exynos->device_name) {
@@ -2182,10 +2184,9 @@ fail_alloc_bufmgr_func:
        if (bufmgr_exynos->hashBos)
                drmHashDestroy(bufmgr_exynos->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:
        if (bufmgr_exynos->fd >= 0)
                close(bufmgr_exynos->fd);