Skip to content

Commit

Permalink
NFC: Dot not dispatch HCI event received on unopened pipe
Browse files Browse the repository at this point in the history
A chip with pre-opened gates may send events on a gate that nobody
has opened in the handset host. Discard those events.

Signed-off-by: Eric Lapuyade <eric.lapuyade@intel.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
  • Loading branch information
Eric Lapuyade authored and Samuel Ortiz committed Nov 19, 2012
1 parent 23f7e6d commit 74a5b96
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions net/nfc/hci/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,12 @@ void nfc_hci_event_received(struct nfc_hci_dev *hdev, u8 pipe, u8 event,
struct sk_buff *skb)
{
int r = 0;
u8 gate = nfc_hci_pipe2gate(hdev, pipe);

if (gate == 0xff) {
pr_err("Discarded event %x to unopened pipe %x\n", event, pipe);
goto exit;
}

switch (event) {
case NFC_HCI_EVT_TARGET_DISCOVERED:
Expand All @@ -309,14 +315,11 @@ void nfc_hci_event_received(struct nfc_hci_dev *hdev, u8 pipe, u8 event,
goto exit;
}

r = nfc_hci_target_discovered(hdev,
nfc_hci_pipe2gate(hdev, pipe));
r = nfc_hci_target_discovered(hdev, gate);
break;
default:
if (hdev->ops->event_received) {
hdev->ops->event_received(hdev,
nfc_hci_pipe2gate(hdev, pipe),
event, skb);
hdev->ops->event_received(hdev, gate, event, skb);
return;
}

Expand Down

0 comments on commit 74a5b96

Please sign in to comment.