If drm_sched_job_init fails, hw_vm_fence is not freed currently, then cause memory leak.
Signed-off-by: Jiqian Chen <[email protected]> --- v1->v2 changes: * assign the return code of drm_sched_job_init and check that instead. --- drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c index 7f5d01164897..72e1bfd3fe4c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c @@ -219,8 +219,12 @@ int amdgpu_job_alloc(struct amdgpu_device *adev, struct amdgpu_vm *vm, if (!entity) return 0; - return drm_sched_job_init(&(*job)->base, entity, 1, owner, - drm_client_id); + r = drm_sched_job_init(&(*job)->base, entity, 1, owner, drm_client_id); + if (!r) { + return 0; + } + + kfree((*job)->hw_vm_fence); err_fence: kfree((*job)->hw_fence); -- 2.34.1
