If drm_sched_job_init fails, hw_vm_fence is not freed currently,
then cause memory leak.

Signed-off-by: Jiqian Chen <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
index 7f5d01164897..a5d3b35353da 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
@@ -216,11 +216,11 @@ int amdgpu_job_alloc(struct amdgpu_device *adev, struct 
amdgpu_vm *vm,
        (*job)->generation = amdgpu_vm_generation(adev, vm);
        (*job)->vm_pd_addr = AMDGPU_BO_INVALID_OFFSET;
 
-       if (!entity)
+       if (!entity ||
+               !drm_sched_job_init(&(*job)->base, entity, 1, owner, 
drm_client_id))
                return 0;
 
-       return drm_sched_job_init(&(*job)->base, entity, 1, owner,
-                                 drm_client_id);
+       kfree((*job)->hw_vm_fence);
 
 err_fence:
        kfree((*job)->hw_fence);
-- 
2.34.1

Reply via email to