aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2013-11-19 16:28:06 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2013-11-21 00:15:31 -0500
commitb64da05fb746c6ff5bcb9abeaa52684d1b08a2b9 (patch)
tree033d51b5ae9914a0b1bb25596fb71bc7e56547f6 /drivers/input
parent0221e670cd25bb41062031eaa653f6447707abc6 (diff)
Input: hp_sdc_rtc - unlock on error in hp_sdc_rtc_read_i8042timer()
The transaction task here is hp_sdc_tasklet() and it releases the lock. The problem is if we aren't able to queue the transaction then we need to release the lock ourselves. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/misc/hp_sdc_rtc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/input/misc/hp_sdc_rtc.c b/drivers/input/misc/hp_sdc_rtc.c
index 86b822806e95..45e0e3e55de2 100644
--- a/drivers/input/misc/hp_sdc_rtc.c
+++ b/drivers/input/misc/hp_sdc_rtc.c
@@ -180,7 +180,10 @@ static int64_t hp_sdc_rtc_read_i8042timer (uint8_t loadcmd, int numreg)
180 if (WARN_ON(down_interruptible(&i8042tregs))) 180 if (WARN_ON(down_interruptible(&i8042tregs)))
181 return -1; 181 return -1;
182 182
183 if (hp_sdc_enqueue_transaction(&t)) return -1; 183 if (hp_sdc_enqueue_transaction(&t)) {
184 up(&i8042tregs);
185 return -1;
186 }
184 187
185 /* Sleep until results come back. */ 188 /* Sleep until results come back. */
186 if (WARN_ON(down_interruptible(&i8042tregs))) 189 if (WARN_ON(down_interruptible(&i8042tregs)))