[PATCH] drm/amdgpu: fix memory leak

Koenig, Christian Christian.Koenig at amd.com
Fri Oct 4 15:03:50 UTC 2019


Am 04.10.19 um 15:51 schrieb Nirmoy Das:
> cleanup error handling code and make sure temporary info array
> with the handles are freed by amdgpu_bo_list_put() on
> idr_replace()'s failure.
>
> Signed-off-by: Nirmoy Das <nirmoy.das at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c | 14 +++++++-------
>   1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> index 7bcf86c61999..61e38e43ad1d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
> @@ -270,7 +270,7 @@ int amdgpu_bo_list_ioctl(struct drm_device *dev, void *data,
>   
>   	r = amdgpu_bo_create_list_entry_array(&args->in, &info);
>   	if (r)
> -		goto error_free;
> +		return r;
>   
>   	switch (args->in.operation) {
>   	case AMDGPU_BO_LIST_OP_CREATE:
> @@ -283,8 +283,7 @@ int amdgpu_bo_list_ioctl(struct drm_device *dev, void *data,
>   		r = idr_alloc(&fpriv->bo_list_handles, list, 1, 0, GFP_KERNEL);
>   		mutex_unlock(&fpriv->bo_list_lock);
>   		if (r < 0) {
> -			amdgpu_bo_list_put(list);
> -			return r;
> +			goto error_put_list;
>   		}
>   
>   		handle = r;
> @@ -306,9 +305,8 @@ int amdgpu_bo_list_ioctl(struct drm_device *dev, void *data,
>   		mutex_unlock(&fpriv->bo_list_lock);
>   
>   		if (IS_ERR(old)) {
> -			amdgpu_bo_list_put(list);
>   			r = PTR_ERR(old);
> -			goto error_free;
> +			goto error_put_list;
>   		}
>   
>   		amdgpu_bo_list_put(old);
> @@ -325,8 +323,10 @@ int amdgpu_bo_list_ioctl(struct drm_device *dev, void *data,
>   
>   	return 0;
>   
> +error_put_list:
> +	amdgpu_bo_list_put(list);
> +
>   error_free:
> -	if (info)
> -		kvfree(info);
> +	kvfree(info);
>   	return r;
>   }



More information about the amd-gfx mailing list