]> 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)
committerTodd Poynter <tpoynter@nvidia.com>
Tue, 24 Jun 2014 19:01:50 +0000 (12:01 -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

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
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Jordan Nien <jnien@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Robert Collins <rcollins@nvidia.com>
Tested-by: Robert Collins <rcollins@nvidia.com>
Reviewed-by: Mitch Luban <mluban@nvidia.com>
drivers/input/touchscreen/rm31080a_ts.c

index 29bc8800922503a0d139e04873c122d3d9e3896e..770c8dac01f6120f89aa870f18027ac48e48ef4d 100644 (file)
@@ -1355,13 +1355,17 @@ static int rm_tch_cmd_process(u8 u8_sel_case,
                        ret = RETURN_OK;
                        if (p_cmd_tbl[_SUB_CMD] == KRL_SUB_CMD_SENSOR_QU) {
 #if (ISR_POST_HANDLER == WORK_QUEUE)
+                               mutex_unlock(&lock);
                                flush_workqueue(g_st_ts.rm_workqueue);
                                g_worker_queue_is_flush = true;
+                               mutex_lock(&lock);
 #endif
                        } 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;