On Tue, Nov 28, 2017 at 1:29 AM, Felix Kuehling <Felix.Kuehling at amd.com> wrote: > Increment the kfd_process.lead_thread's reference counter to make > it safe to dereference. This is needed for getting a safe reference > to the process' mm_struct. I don't object to this patch, but I thought we don't dereference the process' mm_struct... >From kfd_priv.h: /* * Opaque pointer to mm_struct. We don't hold a reference to * it so it should never be dereferenced from here. This is * only used for looking up processes by their mm. */ void *mm; > > Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com> > --- > drivers/gpu/drm/amd/amdkfd/kfd_process.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c > index 99c18ee..660d8bc 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c > @@ -24,6 +24,7 @@ > #include <linux/log2.h> > #include <linux/sched.h> > #include <linux/sched/mm.h> > +#include <linux/sched/task.h> > #include <linux/slab.h> > #include <linux/amd-iommu.h> > #include <linux/notifier.h> > @@ -191,6 +192,8 @@ static void kfd_process_wq_release(struct work_struct *work) > > mutex_destroy(&p->mutex); > > + put_task_struct(p->lead_thread); > + > kfree(p); > > kfree(work); > @@ -342,6 +345,7 @@ static struct kfd_process *create_process(const struct task_struct *thread) > (uintptr_t)process->mm); > > process->lead_thread = thread->group_leader; > + get_task_struct(process->lead_thread); > > INIT_LIST_HEAD(&process->per_device_data); > > -- > 2.7.4 >