From: Yong Zhao Date: Mon, 27 Nov 2017 23:29:53 +0000 (-0500) Subject: drm/amdkfd: Return NULL if kfd_lookup_process_by_pasid fails X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=82c16b4280bc42bc035af566e1480d88666126b1;p=linux.git drm/amdkfd: Return NULL if kfd_lookup_process_by_pasid fails If no matching process is found, return NULL instead of a pointer to the last process in the kfd_processes_table. Signed-off-by: Yong Zhao Signed-off-by: Felix Kuehling Reviewed-by: Oded Gabbay Signed-off-by: Oded Gabbay --- diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c index 509f987f4994c..93f90191509fe 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c @@ -570,7 +570,7 @@ bool kfd_has_process_device_data(struct kfd_process *p) /* This increments the process->ref counter. */ struct kfd_process *kfd_lookup_process_by_pasid(unsigned int pasid) { - struct kfd_process *p; + struct kfd_process *p, *ret_p = NULL; unsigned int temp; int idx = srcu_read_lock(&kfd_processes_srcu); @@ -578,13 +578,14 @@ struct kfd_process *kfd_lookup_process_by_pasid(unsigned int pasid) hash_for_each_rcu(kfd_processes_table, temp, p, kfd_processes) { if (p->pasid == pasid) { kref_get(&p->ref); + ret_p = p; break; } } srcu_read_unlock(&kfd_processes_srcu, idx); - return p; + return ret_p; } int kfd_reserved_mem_mmap(struct kfd_process *process,