Bluetooth: hci_event: Ignore multiple conn complete events
authorSoenke Huster <soenke.huster@eknoes.de>
Sun, 23 Jan 2022 14:06:24 +0000 (15:06 +0100)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 25 Jan 2022 02:38:14 +0000 (18:38 -0800)
commitd5ebaa7c5f6f688959e8d40840b2249ede63b8ed
tree070e0ba892719aa7921ba90d864ade2eb59a6812
parent5201d23cc8e57531e0b17e41c0ae10405ba6abd3
Bluetooth: hci_event: Ignore multiple conn complete events

When one of the three connection complete events is received multiple
times for the same handle, the device is registered multiple times which
leads to memory corruptions. Therefore, consequent events for a single
connection are ignored.

The conn->state can hold different values, therefore HCI_CONN_HANDLE_UNSET
is introduced to identify new connections. To make sure the events do not
contain this or another invalid handle HCI_CONN_HANDLE_MAX and checks
are introduced.

Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=215497
Signed-off-by: Soenke Huster <soenke.huster@eknoes.de>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
include/net/bluetooth/hci_core.h
net/bluetooth/hci_conn.c
net/bluetooth/hci_event.c