In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_uart: clear HCI_UART_SENDING when write_work is canceled HCI_UART_SENDING bit in tx_state means write_work is pending and blocks queueing it again. Currently this bit is not cleared when canceling the work in hci_uart_close(), which blocks future writes when device is reopened later if write_work was pending. Fix by clearing HCI_UART_SENDING when canceling the work. Also make clearing of tx_skb safe by using disable_work_sync + enable_work instead of just cancel_work_sync. hci_uart_flush() purges the proto tx queue so we can cancel the pending write_work there, instead of doing it just in hci_uart_close(). Re-enable and possibly requeue the work after queue flush.
https://git.kernel.org/stable/c/d52446b3e735cfdbdc2a58342163803bc2e64249
https://git.kernel.org/stable/c/b9dd39cf1667e378b25a082ca796d495d578c5d3
https://git.kernel.org/stable/c/714d861d35d937f23375a4517569b13917bbbe51
https://git.kernel.org/stable/c/1b0d946d6f08bd39211385bc703a440911b41e46