From 3d8b6ea6646e3e86afd83a27014001736cf6fc01 Mon Sep 17 00:00:00 2001 From: Junwei Zhang Date: Tue, 14 Aug 2018 11:00:08 +0800 Subject: [PATCH] amdgpu: free flink bo in bo import MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix potential memory leak when handle flink bo in bo import. Free the flink bo after bo import and in error handling. Signed-off-by: Junwei Zhang Reviewed-by: Christian König --- amdgpu/amdgpu_bo.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/amdgpu/amdgpu_bo.c b/amdgpu/amdgpu_bo.c index 8efd014e..7ea1d0fc 100644 --- a/amdgpu/amdgpu_bo.c +++ b/amdgpu/amdgpu_bo.c @@ -255,6 +255,7 @@ int amdgpu_bo_import(amdgpu_device_handle dev, struct amdgpu_bo_import_result *output) { struct drm_gem_open open_arg = {}; + struct drm_gem_close close_arg = {}; struct amdgpu_bo *bo = NULL; int r; int dma_fd; @@ -342,15 +343,19 @@ int amdgpu_bo_import(amdgpu_device_handle dev, bo->handle = open_arg.handle; if (dev->flink_fd != dev->fd) { + close_arg.handle = open_arg.handle; r = drmPrimeHandleToFD(dev->flink_fd, bo->handle, DRM_CLOEXEC, &dma_fd); if (r) { free(bo); + drmIoctl(dev->flink_fd, DRM_IOCTL_GEM_CLOSE, + &close_arg); pthread_mutex_unlock(&dev->bo_table_mutex); return r; } r = drmPrimeFDToHandle(dev->fd, dma_fd, &bo->handle ); close(dma_fd); + drmIoctl(dev->flink_fd, DRM_IOCTL_GEM_CLOSE, &close_arg); if (r) { free(bo);