From: Andrey Grodzovsky Date: Mon, 18 Jan 2021 21:01:13 +0000 (-0500) Subject: drm/sched: Cancel and flush all outstanding jobs before finish. X-Git-Tag: v5.4.102~81 X-Git-Url: https://git.fsl.cs.sunysb.edu/?a=commitdiff_plain;h=4d09487509ad85ea185dfef164ba1d38c111f9ea;p=wrapfs-5.3.y.git drm/sched: Cancel and flush all outstanding jobs before finish. commit e582951baabba3e278c97169d0acc1e09b24a72e upstream. To avoid any possible use after free. Signed-off-by: Andrey Grodzovsky Reviewed-by: Christian König Link: https://patchwork.freedesktop.org/patch/414814/ CC: stable@vger.kernel.org Signed-off-by: Christian König Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c index 134e9106ebac..37679507f943 100644 --- a/drivers/gpu/drm/scheduler/sched_main.c +++ b/drivers/gpu/drm/scheduler/sched_main.c @@ -851,6 +851,9 @@ void drm_sched_fini(struct drm_gpu_scheduler *sched) if (sched->thread) kthread_stop(sched->thread); + /* Confirm no work left behind accessing device structures */ + cancel_delayed_work_sync(&sched->work_tdr); + sched->ready = false; } EXPORT_SYMBOL(drm_sched_fini);