summaryrefslogtreecommitdiffstats
path: root/drivers/nfc/trf7970a.c
diff options
context:
space:
mode:
authorMark A. Greer <mgreer@animalcreek.com>2014-09-03 00:12:43 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2014-09-07 23:13:45 +0200
commit6fb9edcb43d0b1bf0ac2aaf6ba488d105c45f477 (patch)
treed3f462e5c3467f77ef894733572afb757c281dcc /drivers/nfc/trf7970a.c
parentNFC: trf7970a: Don't turn on RF if there is already an RF field (diff)
downloadlinux-6fb9edcb43d0b1bf0ac2aaf6ba488d105c45f477.tar.xz
linux-6fb9edcb43d0b1bf0ac2aaf6ba488d105c45f477.zip
NFC: trf7970a: Cancel timer when error encountered
Some paths leave a timer still running when trf7970a_send_err_upstream() is called. This can cause a timeout to occur in a subsequent transaction making it fail. Fix this by ensuring there is no timer running before sending an error upstream. Signed-off-by: Mark A. Greer <mgreer@animalcreek.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/nfc/trf7970a.c')
-rw-r--r--drivers/nfc/trf7970a.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c
index 0f09278ec37a..00fb2cee6790 100644
--- a/drivers/nfc/trf7970a.c
+++ b/drivers/nfc/trf7970a.c
@@ -506,6 +506,8 @@ static void trf7970a_send_err_upstream(struct trf7970a *trf, int errno)
{
dev_dbg(trf->dev, "Error - state: %d, errno: %d\n", trf->state, errno);
+ cancel_delayed_work(&trf->timeout_work);
+
kfree_skb(trf->rx_skb);
trf->rx_skb = ERR_PTR(errno);