drm/amd/sched: NULL out the s_fence field after run_job
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Thu, 28 Sep 2017 09:51:32 +0000 (11:51 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 6 Oct 2017 21:44:30 +0000 (17:44 -0400)
amd_sched_process_job drops the fence reference, so NULL out the s_fence
field before adding it as a callback to guard against accidentally using
s_fence after it may have be freed.

v2: add a clarifying comment

Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Andres Rodriguez <andresx7@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/scheduler/gpu_scheduler.c

index e793312e351c42c5878664906392b10c88cc5632..4693be20e30a1ce0038c9def92436d50e5fdd341 100644 (file)
@@ -611,6 +611,10 @@ static int amd_sched_main(void *param)
 
                fence = sched->ops->run_job(sched_job);
                amd_sched_fence_scheduled(s_fence);
+
+               /* amd_sched_process_job drops the job's reference of the fence. */
+               sched_job->s_fence = NULL;
+
                if (fence) {
                        s_fence->parent = dma_fence_get(fence);
                        r = dma_fence_add_callback(fence, &s_fence->cb,