[PATCH V3 09/13] amdkfd: find kfd_process by filep->private_data in kfd_mmap

Felix Kuehling felix.kuehling at amd.com
Thu Aug 7 20:55:50 UTC 2025


On 2025-08-04 7:05, Zhu Lingshan wrote:
> This commit finds the proper kfd_process by
> filep->private_data in kfd_mmap,
> because the function kfd_get_process()
> can not locate a specific kfd process among
> multiple contexts.
>
> Signed-off-by: Zhu Lingshan <lingshan.zhu at amd.com>

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


> ---
>  drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> index 28df35a63c29..662b181f1fd2 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> @@ -3407,16 +3407,19 @@ static int kfd_mmio_mmap(struct kfd_node *dev, struct kfd_process *process,
>  }
>  
>  
> -static int kfd_mmap(struct file *filp, struct vm_area_struct *vma)
> +static int kfd_mmap(struct file *filep, struct vm_area_struct *vma)
>  {
>  	struct kfd_process *process;
>  	struct kfd_node *dev = NULL;
>  	unsigned long mmap_offset;
>  	unsigned int gpu_id;
>  
> -	process = kfd_get_process(current);
> -	if (IS_ERR(process))
> -		return PTR_ERR(process);
> +	process = filep->private_data;
> +	if (!process)
> +		return -ESRCH;
> +
> +	if (process->lead_thread != current->group_leader)
> +		return -EBADF;
>  
>  	mmap_offset = vma->vm_pgoff << PAGE_SHIFT;
>  	gpu_id = KFD_MMAP_GET_GPU_ID(mmap_offset);


More information about the amd-gfx mailing list