summaryrefslogtreecommitdiffstats
path: root/drivers/nfc
diff options
context:
space:
mode:
authorChristophe Ricard <christophe.ricard@gmail.com>2014-09-03 23:30:26 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2014-09-08 00:29:50 +0200
commitac633ba6acb94a11b09a7ec417c72f65c6308b7a (patch)
treef1406c1dac972c3911d7f5666155c8332b7b6928 /drivers/nfc
parentNFC: st21nfca: Add condition to make sure atr_req->length is valid. (diff)
downloadlinux-ac633ba6acb94a11b09a7ec417c72f65c6308b7a.tar.xz
linux-ac633ba6acb94a11b09a7ec417c72f65c6308b7a.zip
NFC: st21nfcb: Fix logic when running into i2c read retry
When retrying to read the NCI header, the CLF might not be available the first time. However it may not be successful the second time and this may cause an error in the function. Enforce the retrieve data length is as expected. Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/nfc')
-rw-r--r--drivers/nfc/st21nfcb/i2c.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/nfc/st21nfcb/i2c.c b/drivers/nfc/st21nfcb/i2c.c
index ff67bbf53011..02fac319dfa9 100644
--- a/drivers/nfc/st21nfcb/i2c.c
+++ b/drivers/nfc/st21nfcb/i2c.c
@@ -168,7 +168,9 @@ static int st21nfcb_nci_i2c_read(struct st21nfcb_i2c_phy *phy,
if (r == -EREMOTEIO) { /* Retry, chip was in standby */
usleep_range(1000, 4000);
r = i2c_master_recv(client, buf, ST21NFCB_NCI_I2C_MIN_SIZE);
- } else if (r != ST21NFCB_NCI_I2C_MIN_SIZE) {
+ }
+
+ if (r != ST21NFCB_NCI_I2C_MIN_SIZE) {
nfc_err(&client->dev, "cannot read ndlc & nci header\n");
return -EREMOTEIO;
}