]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/v3d: Release indirect CSD GEM reference on CPU job free
authorMaíra Canal <mcanal@igalia.com>
Fri, 15 May 2026 15:07:15 +0000 (12:07 -0300)
committerMaíra Canal <mcanal@igalia.com>
Mon, 18 May 2026 22:59:51 +0000 (19:59 -0300)
v3d_get_cpu_indirect_csd_params() takes a reference to the indirect BO via
drm_gem_object_lookup() and stashes it in cpu_job->indirect_csd.indirect,
but nothing on the CPU job teardown path ever drops that reference.

Drop the extra reference in v3d_cpu_job_free(). The NULL check covers ioctl
errors before the lookup ran and CPU job types other than
V3D_CPU_JOB_TYPE_INDIRECT_CSD, which leave the field zero-initialised.

Cc: stable@vger.kernel.org
Fixes: 18b8413b25b7 ("drm/v3d: Create a CPU job extension for a indirect CSD job")
Assisted-by: Claude:claude-opus-4.7
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Link: https://patch.msgid.link/20260515-v3d-cpu-job-leaks-v1-2-7f147cbbf935@igalia.com
Signed-off-by: Maíra Canal <mcanal@igalia.com>
drivers/gpu/drm/v3d/v3d_submit.c

index e3a6e7cc7bd5dca8084a4096457ce14732917af0..3ddd53b6f43769b46c1a311732f313e2a7c5595c 100644 (file)
@@ -135,6 +135,9 @@ v3d_cpu_job_free(struct kref *ref)
        v3d_performance_query_info_free(&job->performance_query,
                                        job->performance_query.count);
 
+       if (job->indirect_csd.indirect)
+               drm_gem_object_put(job->indirect_csd.indirect);
+
        v3d_job_free(ref);
 }