From: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> We need to synchronously take down the hangcheck timer, and then cancel the recovery work when we're unbinding the GPU to avoid these timers and workers running after we clean up. Signed-off-by: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> --- drivers/staging/etnaviv/etnaviv_gpu.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/staging/etnaviv/etnaviv_gpu.c b/drivers/staging/etnaviv/etnaviv_gpu.c index a5a47f34eba5..0547e93972e6 100644 --- a/drivers/staging/etnaviv/etnaviv_gpu.c +++ b/drivers/staging/etnaviv/etnaviv_gpu.c @@ -932,10 +932,12 @@ static void etnaviv_gpu_unbind(struct device *dev, struct device *master, { struct etnaviv_gpu *gpu = dev_get_drvdata(dev); - del_timer(&gpu->hangcheck_timer); - DBG("%s", dev_name(gpu->dev)); + /* Safely take down hangcheck */ + del_timer_sync(&gpu->hangcheck_timer); + cancel_work_sync(&gpu->recover_work); + WARN_ON(!list_empty(&gpu->active_list)); if (gpu->buffer) -- 2.1.4 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel