Only show warning message if process mm is still alive when queue
buffer is freed to evcit the queues.

If kfd_lookup_process_by_mm return NULL, means the process is already
exited and mm is gone, it is fine to free queue buffer.

Fixes: b049504e211e ("drm/amdkfd: Validate user queue svm memory residency")
Signed-off-by: Philip Yang <[email protected]>
---
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index 4d4a47313f5b..d1b2f8525f80 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -2487,7 +2487,9 @@ svm_range_unmap_from_cpu(struct mm_struct *mm, struct 
svm_range *prange,
        bool unmap_parent;
        uint32_t i;
 
-       if (atomic_read(&prange->queue_refcount)) {
+       p = kfd_lookup_process_by_mm(mm);
+
+       if (p && atomic_read(&prange->queue_refcount)) {
                int r;
 
                pr_warn("Freeing queue vital buffer 0x%lx, queue evicted\n",
@@ -2497,7 +2499,6 @@ svm_range_unmap_from_cpu(struct mm_struct *mm, struct 
svm_range *prange,
                        pr_debug("failed %d to quiesce KFD queues\n", r);
        }
 
-       p = kfd_lookup_process_by_mm(mm);
        if (!p)
                return;
        svms = &p->svms;
-- 
2.49.0

Reply via email to