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....@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehl...@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);