amdgpu: free flink bo in bo import
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.Zhang@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com>main
parent
c6493f360e
commit
3d8b6ea664
|
@ -255,6 +255,7 @@ int amdgpu_bo_import(amdgpu_device_handle dev,
|
||||||
struct amdgpu_bo_import_result *output)
|
struct amdgpu_bo_import_result *output)
|
||||||
{
|
{
|
||||||
struct drm_gem_open open_arg = {};
|
struct drm_gem_open open_arg = {};
|
||||||
|
struct drm_gem_close close_arg = {};
|
||||||
struct amdgpu_bo *bo = NULL;
|
struct amdgpu_bo *bo = NULL;
|
||||||
int r;
|
int r;
|
||||||
int dma_fd;
|
int dma_fd;
|
||||||
|
@ -342,15 +343,19 @@ int amdgpu_bo_import(amdgpu_device_handle dev,
|
||||||
|
|
||||||
bo->handle = open_arg.handle;
|
bo->handle = open_arg.handle;
|
||||||
if (dev->flink_fd != dev->fd) {
|
if (dev->flink_fd != dev->fd) {
|
||||||
|
close_arg.handle = open_arg.handle;
|
||||||
r = drmPrimeHandleToFD(dev->flink_fd, bo->handle, DRM_CLOEXEC, &dma_fd);
|
r = drmPrimeHandleToFD(dev->flink_fd, bo->handle, DRM_CLOEXEC, &dma_fd);
|
||||||
if (r) {
|
if (r) {
|
||||||
free(bo);
|
free(bo);
|
||||||
|
drmIoctl(dev->flink_fd, DRM_IOCTL_GEM_CLOSE,
|
||||||
|
&close_arg);
|
||||||
pthread_mutex_unlock(&dev->bo_table_mutex);
|
pthread_mutex_unlock(&dev->bo_table_mutex);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
r = drmPrimeFDToHandle(dev->fd, dma_fd, &bo->handle );
|
r = drmPrimeFDToHandle(dev->fd, dma_fd, &bo->handle );
|
||||||
|
|
||||||
close(dma_fd);
|
close(dma_fd);
|
||||||
|
drmIoctl(dev->flink_fd, DRM_IOCTL_GEM_CLOSE, &close_arg);
|
||||||
|
|
||||||
if (r) {
|
if (r) {
|
||||||
free(bo);
|
free(bo);
|
||||||
|
|
Loading…
Reference in New Issue