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-Url: http://git.maquefel.me/?a=commitdiff_plain;h=e582951baabba3e278c97169d0acc1e09b24a72e;p=linux.git drm/sched: Cancel and flush all outstanding jobs before finish. 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 --- diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c index 997aa15dd8d93..92637b70c9bf6 100644 --- a/drivers/gpu/drm/scheduler/sched_main.c +++ b/drivers/gpu/drm/scheduler/sched_main.c @@ -899,6 +899,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);