[PATCH 2/2] drm/amdkfd: err_pin_bo path leaks kfd_bo_list

Felix Kuehling felix.kuehling at amd.com
Mon Nov 29 21:47:44 UTC 2021


Am 2021-11-29 um 4:23 p.m. schrieb Philip Yang:
> Refactor userptr and pin_bo path to make it less confusing, move
> err_pin_bo label up to remove mem from process_info kfd_bo_list.
>
> Signed-off-by: Philip Yang <Philip.Yang at amd.com>

The series is

Reviewed-by: Felix Kuehling <Felix.Kuehling at amd.com>


> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 14 ++++++--------
>  1 file changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> index 5df89a295177..b8490789eef4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> @@ -1559,13 +1559,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
>  		ret = init_user_pages(*mem, user_addr);
>  		if (ret)
>  			goto allocate_init_user_pages_failed;
> -	}
> -
> -	if (offset)
> -		*offset = amdgpu_bo_mmap_offset(bo);
> -
> -	if (flags & (KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL |
> -			KFD_IOC_ALLOC_MEM_FLAGS_MMIO_REMAP)) {
> +	} else  if (flags & (KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL |
> +				KFD_IOC_ALLOC_MEM_FLAGS_MMIO_REMAP)) {
>  		ret = amdgpu_amdkfd_gpuvm_pin_bo(bo, AMDGPU_GEM_DOMAIN_GTT);
>  		if (ret) {
>  			pr_err("Pinning MMIO/DOORBELL BO during ALLOC FAILED\n");
> @@ -1575,11 +1570,14 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
>  		bo->preferred_domains = AMDGPU_GEM_DOMAIN_GTT;
>  	}
>  
> +	if (offset)
> +		*offset = amdgpu_bo_mmap_offset(bo);
> +
>  	return 0;
>  
>  allocate_init_user_pages_failed:
> -	remove_kgd_mem_from_kfd_bo_list(*mem, avm->process_info);
>  err_pin_bo:
> +	remove_kgd_mem_from_kfd_bo_list(*mem, avm->process_info);
>  	drm_vma_node_revoke(&gobj->vma_node, drm_priv);
>  err_node_allow:
>  	/* Don't unreserve system mem limit twice */


More information about the amd-gfx mailing list