From: Eric Lapuyade Date: Wed, 17 Oct 2012 14:49:12 +0000 (+0200) Subject: NFC: Dot not dispatch HCI event received on unopened pipe X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=74a5b96621a50a6c41377bad65149930b050df98;p=openwrt%2Fstaging%2Fblogic.git NFC: Dot not dispatch HCI event received on unopened pipe 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 Signed-off-by: Samuel Ortiz --- diff --git a/net/nfc/hci/core.c b/net/nfc/hci/core.c index a58db89b4555..38d5f96dfd10 100644 --- a/net/nfc/hci/core.c +++ b/net/nfc/hci/core.c @@ -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: @@ -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; }