From c1a05fd2c595f2e6e8a6a37c45bafbdff115105e Mon Sep 17 00:00:00 2001 From: "hyesoo.yu" Date: Wed, 19 Jul 2017 22:40:11 +0900 Subject: [PATCH] [COMMON] g2d: unlock the spinlock on error handling The workqueue must be terminated after the spinlock has been released. However, that is missing when handing of suspend, so fix it. BUG: workqueue leaked lock or atomic: kworker/u16:8/0x00000001/5856 Change-Id: I6f9a36095dd9673dd57e38f24a3d306e1407529a Signed-off-by: hyesoo.yu --- drivers/gpu/exynos/g2d/g2d_task.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/exynos/g2d/g2d_task.c b/drivers/gpu/exynos/g2d/g2d_task.c index af335925e7f2..b01ecbe5727c 100644 --- a/drivers/gpu/exynos/g2d/g2d_task.c +++ b/drivers/gpu/exynos/g2d/g2d_task.c @@ -291,10 +291,8 @@ static void g2d_schedule_task(struct g2d_task *task) list_add_tail(&task->node, &g2d_dev->tasks_prepared); change_task_state_prepared(task); - if (!!(g2d_dev->state & (1 << G2D_DEVICE_STATE_SUSPEND))) - return; - - g2d_execute_task(g2d_dev, task); + if (!(g2d_dev->state & (1 << G2D_DEVICE_STATE_SUSPEND))) + g2d_execute_task(g2d_dev, task); spin_unlock_irqrestore(&g2d_dev->lock_task, flags); return; -- 2.20.1