diff options
| author | Sunil Khatri <sunil.khatri@amd.com> | 2025-10-24 22:29:00 +0530 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2025-10-28 10:00:35 -0400 |
| commit | 1017e393ad6d61756f7f35a6eb059a42a40818e6 (patch) | |
| tree | 1d9c44b740b40a11f56d353ea00389c7f277d452 | |
| parent | a0559012a18a5a6ad87516e982892765a403b8ab (diff) | |
drm/amdkfd: fix the clean up when amdgpu_hmm_range_alloc fails
we need to unreserve the bo's too during clean up along
with freeing the memory of context.
Fixes: 7bb02a34c2ba ("drm/amdkfd: add missing return value check for range")
Signed-off-by: Sunil Khatri <sunil.khatri@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
| -rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c index 7f0ab73e2396..729aac81563c 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c @@ -1738,14 +1738,11 @@ static int svm_range_validate_and_map(struct mm_struct *mm, WRITE_ONCE(p->svms.faulting_task, current); range = amdgpu_hmm_range_alloc(NULL); - if (unlikely(!range)) { + if (likely(range)) + r = amdgpu_hmm_range_get_pages(&prange->notifier, addr, npages, + readonly, owner, range); + else r = -ENOMEM; - goto free_ctx; - } - - r = amdgpu_hmm_range_get_pages(&prange->notifier, addr, npages, - readonly, owner, - range); WRITE_ONCE(p->svms.faulting_task, NULL); if (r) { amdgpu_hmm_range_free(range); |