mirror of https://gitee.com/openkylin/linux.git
NFC: pn533: reset poll modulation list before calling targets_found
We need to reset the poll modulation list before calling nfc_targets_found because otherwise userspace could run before the modulation list is cleared and then get a "Cannot activate target while polling" error upon calling activate_target. Signed-off-by: Michael Thalmeier <michael.thalmeier@hale.at> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
30f98489f5
commit
c952f915ce
|
@ -865,6 +865,7 @@ static int pn533_target_found_type_b(struct nfc_target *nfc_tgt, u8 *tgt_data,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void pn533_poll_reset_mod_list(struct pn533 *dev);
|
||||
static int pn533_target_found(struct pn533 *dev, u8 tg, u8 *tgdata,
|
||||
int tgdata_len)
|
||||
{
|
||||
|
@ -914,6 +915,7 @@ static int pn533_target_found(struct pn533 *dev, u8 tg, u8 *tgdata,
|
|||
|
||||
dev->tgt_available_prots = nfc_tgt.supported_protocols;
|
||||
|
||||
pn533_poll_reset_mod_list(dev);
|
||||
nfc_targets_found(dev->nfc_dev, &nfc_tgt, 1);
|
||||
|
||||
return 0;
|
||||
|
@ -980,11 +982,9 @@ static int pn533_start_poll_complete(struct pn533 *dev, struct sk_buff *resp)
|
|||
rc = pn533_target_found(dev, tg, tgdata, tgdata_len);
|
||||
|
||||
/* We must stop the poll after a valid target found */
|
||||
if (rc == 0) {
|
||||
pn533_poll_reset_mod_list(dev);
|
||||
if (rc == 0)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue