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 <jerry.zh...@amd.com>
---
 amdgpu/amdgpu_bo.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/amdgpu/amdgpu_bo.c b/amdgpu/amdgpu_bo.c
index b790e9b..d9556ec 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);
-- 
1.9.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to