From b9e3016a5369839bf923c8d2bec9d1552e50f3f3 Mon Sep 17 00:00:00 2001 From: "Mark A. Greer" Date: Tue, 23 Sep 2014 11:25:47 -0700 Subject: NFC: trf7970a: Unlock mutex before exiting trf7970a_irq() Recent changes to trf7970a_irq() added a couple return paths that don't unlock the mutex that is locked when the routine is entered. Fix this by ensuring the mutex is always unlocked before returning. Signed-off-by: Mark A. Greer Signed-off-by: Samuel Ortiz --- drivers/nfc/trf7970a.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c index 59a7df7f023c..0fe7b957436c 100644 --- a/drivers/nfc/trf7970a.c +++ b/drivers/nfc/trf7970a.c @@ -920,7 +920,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id) TRF7970A_SPECIAL_FCN_REG1, TRF7970A_SPECIAL_FCN_REG1_14_ANTICOLL); if (ret) - return ret; + goto err_unlock_exit; trf->special_fcn_reg1 = TRF7970A_SPECIAL_FCN_REG1_14_ANTICOLL; @@ -933,7 +933,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id) ret = trf7970a_write(trf, TRF7970A_ISO_CTRL, iso_ctrl); if (ret) - return ret; + goto err_unlock_exit; trf->iso_ctrl = iso_ctrl; } @@ -975,6 +975,7 @@ static irqreturn_t trf7970a_irq(int irq, void *dev_id) __func__, trf->state); } +err_unlock_exit: mutex_unlock(&trf->lock); return IRQ_HANDLED; } -- cgit v1.2.3