]> www.infradead.org Git - users/willy/pagecache.git/commit
Bluetooth: btintel_pcie: Fix a potential race condition
authorKiran K <kiran.k@intel.com>
Fri, 31 Jan 2025 13:00:19 +0000 (18:30 +0530)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 13 Feb 2025 16:14:04 +0000 (11:14 -0500)
commit872274b992839ff64fe560767fe7ee5f942ccdb1
treeea5aefc335308a47bc4adb2590d5bb588b9d66eb
parentb4f82f9ed43aefa79bec2504ae8c29be0c0f5d1d
Bluetooth: btintel_pcie: Fix a potential race condition

On HCI_OP_RESET command, firmware raises alive interrupt. Driver needs
to wait for this before sending other command. This patch fixes the potential
miss of alive interrupt due to which HCI_OP_RESET can timeout.

Expected flow:
If tx command is HCI_OP_RESET,
  1. set data->gp0_received = false
  2. send HCI_OP_RESET
  3. wait for alive interrupt

Actual flow having potential race:
If tx command is HCI_OP_RESET,
 1. send HCI_OP_RESET
   1a. Firmware raises alive interrupt here and in ISR
       data->gp0_received  is set to true
 2. set data->gp0_received = false
 3. wait for alive interrupt

Signed-off-by: Kiran K <kiran.k@intel.com>
Fixes: 05c200c8f029 ("Bluetooth: btintel_pcie: Add handshake between driver and firmware")
Reported-by: Bjorn Helgaas <helgaas@kernel.org>
Closes: https://patchwork.kernel.org/project/bluetooth/patch/20241001104451.626964-1-kiran.k@intel.com/
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btintel_pcie.c