amdxdna_cmd_submit() leaves job->cmd_bo as NULL for internal driver commands that use AMDXDNA_INVALID_BO_HANDLE. The cleanup paths in amdxdna_cmd_submit() error handling and amdxdna_sched_job_cleanup() call amdxdna_gem_put_obj(job->cmd_bo) unconditionally.
Although drm_gem_object_put() handles NULL, adding an explicit check makes the code more robust and easier to reason about. Signed-off-by: Deniz Aydogan <[email protected]> --- drivers/accel/amdxdna/amdxdna_ctx.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/accel/amdxdna/amdxdna_ctx.c b/drivers/accel/amdxdna/amdxdna_ctx.c index 31a414c3f..21f0560e6 100644 --- a/drivers/accel/amdxdna/amdxdna_ctx.c +++ b/drivers/accel/amdxdna/amdxdna_ctx.c @@ -575,7 +575,8 @@ void amdxdna_sched_job_cleanup(struct amdxdna_sched_job *job) trace_amdxdna_debug_point(job->hwctx->name, job->seq, "job release"); amdxdna_pm_suspend_put(job->hwctx->client->xdna); amdxdna_arg_bos_put(job); - amdxdna_gem_put_obj(job->cmd_bo); + if (job->cmd_bo) + amdxdna_gem_put_obj(job->cmd_bo); dma_fence_put(job->fence); mmdrop(job->mm); } @@ -676,7 +677,8 @@ int amdxdna_cmd_submit(struct amdxdna_client *client, put_bos: amdxdna_arg_bos_put(job); cmd_put: - amdxdna_gem_put_obj(job->cmd_bo); + if (job->cmd_bo) + amdxdna_gem_put_obj(job->cmd_bo); free_job: if (job->mm) mmdrop(job->mm); -- 2.55.0
