On 2025-10-24 13:26, Sunil Khatri wrote:
we need to unreserve the bo's too during clean up along
with freeing the memory of context.

Fixes: c549912cd8 (drm/amdkfd: add missing return value check for range)
Signed-off-by: Sunil Khatri<[email protected]>
---
  drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index 7f0ab73e2396..76e36201742a 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -1740,7 +1740,7 @@ static int svm_range_validate_and_map(struct mm_struct 
*mm,
                        range = amdgpu_hmm_range_alloc(NULL);
                        if (unlikely(!range)) {
                                r = -ENOMEM;
-                               goto free_ctx;
+                               break;

Sorry, looking at the latest code, it's even more complicated because of p->svms.faulting_task, which also needs to be reset.

                        WRITE_ONCE(p->svms.faulting_task, current);
                        range = amdgpu_hmm_range_alloc(NULL);
                        if (likely(range))
                                r = 
amdgpu_hmm_range_get_pages(&prange->notifier, addr,
                                                               npages, 
readonly, owner,
                                                               range);
                        else
                                r = -ENOMEM;
                        WRITE_ONCE(p->svms.faulting_task, NULL);
                        if (r) {
                                amdgpu_hmm_range_free(range);
                                pr_debug("failed %d to get svm range pages\n", 
r);
                        }

Regards,
  Felix


                        }
r = amdgpu_hmm_range_get_pages(&prange->notifier, addr, npages,

Reply via email to