]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
input: touch: radyium: avoid deadlock
authorXiaohui Tao <xtao@nvidia.com>
Tue, 15 Oct 2013 00:16:09 +0000 (17:16 -0700)
committerHarshada Kale <hkale@nvidia.com>
Thu, 26 Jun 2014 16:34:13 +0000 (09:34 -0700)
Fix potential deadlock in driver

Raydium drop does not fix the problem. We need to have this
temporary fix to solve the problem.

Bug 1384590
Bug 1526923
Bug 1526923

Change-Id: Ifcb56ba5db34b42af0b4d441659d7a5fdd869943
Signed-off-by: Xiaohui Tao <xtao@nvidia.com>
Reviewed-on: http://git-master/r/289969
Reviewed-on: http://git-master/r/427256
(cherry picked from commit dbeeaf0f5de2f7c9015837669851ae217bf559ac)
Reviewed-on: http://git-master/r/428004
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Jordan Nien <jnien@nvidia.com>
Reviewed-by: Robert Collins <rcollins@nvidia.com>
Reviewed-by: Mitch Luban <mluban@nvidia.com>
drivers/input/touchscreen/rm31080a_ts.c

index 52586948f5be1f20e1c1b0bc098bc25684f791a9..7e2cacf1f5d9f8f2639439e6c7ee67251cec2b41 100644 (file)
@@ -1261,12 +1261,16 @@ static int rm_tch_cmd_process(u8 u8_sel_case,
                        "- %d\n", p_cmd_tbl[_SUB_CMD]);*/
                        ret = RETURN_OK;
                        if (p_cmd_tbl[_SUB_CMD] == KRL_SUB_CMD_SENSOR_QU) {
+                               mutex_unlock(&lock);
                                flush_workqueue(g_st_ts.rm_workqueue);
                                g_worker_queue_is_flush = true;
+                               mutex_lock(&lock);
                        } else if (p_cmd_tbl[_SUB_CMD] ==
                                                KRL_SUB_CMD_TIMER_QU) {
+                               mutex_unlock(&lock);
                                flush_workqueue(g_st_ts.rm_timer_workqueue);
                                g_timer_queue_is_flush = true;
+                               mutex_lock(&lock);
                        } else
                                ret = RETURN_FAIL;
                        break;