| From 99dfbadf0d2cca5b837e14027520924deb01aead Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 22 Aug 2018 17:34:11 +0530 |
| Subject: Bluetooth: hci_serdev: clear HCI_UART_PROTO_READY to avoid closing |
| proto races |
| |
| From: Balakrishna Godavarthi <bgodavar@codeaurora.org> |
| |
| [ Upstream commit 7cf7846d27bfc9731e449857db3eec5e0e9701ba ] |
| |
| Clearing HCI_UART_PROTO_READY will avoid usage of proto function pointers |
| before running the proto close function pointer. There is chance of kernel |
| crash, due to usage of non proto close function pointers after proto close. |
| |
| Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org> |
| Signed-off-by: Marcel Holtmann <marcel@holtmann.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/bluetooth/hci_serdev.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/drivers/bluetooth/hci_serdev.c b/drivers/bluetooth/hci_serdev.c |
| index aa2543b3c2869..46e20444ba19b 100644 |
| --- a/drivers/bluetooth/hci_serdev.c |
| +++ b/drivers/bluetooth/hci_serdev.c |
| @@ -368,6 +368,7 @@ void hci_uart_unregister_device(struct hci_uart *hu) |
| { |
| struct hci_dev *hdev = hu->hdev; |
| |
| + clear_bit(HCI_UART_PROTO_READY, &hu->flags); |
| hci_unregister_dev(hdev); |
| hci_free_dev(hdev); |
| |
| -- |
| 2.20.1 |
| |