On Wed, Jan 14, 2026 at 9:53 PM Jiqian Chen <[email protected]> wrote:
>
> If drm_sched_job_init fails, hw_vm_fence is not freed currently,
> then cause memory leak.
>
Fixes: db36632ea51e ("drm/amdgpu: clean up and unify hw fence handling")
Reviewed-by: Alex Deucher <[email protected]>
> 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
>