diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1960-drm-amd-sched-NULL-out-the-s_fence-field-after-run_j.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1960-drm-amd-sched-NULL-out-the-s_fence-field-after-run_j.patch | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1960-drm-amd-sched-NULL-out-the-s_fence-field-after-run_j.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1960-drm-amd-sched-NULL-out-the-s_fence-field-after-run_j.patch new file mode 100644 index 00000000..b9e0c294 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1960-drm-amd-sched-NULL-out-the-s_fence-field-after-run_j.patch @@ -0,0 +1,40 @@ +From f1f9e25e7e06b4f86965a0246ec82f2f77026243 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Nicolai=20H=C3=A4hnle?= <nicolai.haehnle@amd.com> +Date: Thu, 28 Sep 2017 11:51:32 +0200 +Subject: [PATCH 1960/4131] drm/amd/sched: NULL out the s_fence field after + run_job +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +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> +--- + drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +index e793312..4693be2 100644 +--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c ++++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +@@ -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, +-- +2.7.4 + |