Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 74a5b966 authored by Eric Lapuyade's avatar Eric Lapuyade Committed by Samuel Ortiz
Browse files

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: default avatarEric Lapuyade <eric.lapuyade@intel.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 23f7e6d0
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -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;
		}