On Tue, Jan 02, 2024 at 07:08:08PM +0100, Jonas Dreßler wrote: > There's a very confusing mistake in the code starting a HCI inquiry: We're > calling hci_dev_test_flag() to test for HCI_INQUIRY, but hci_dev_test_flag() > checks hdev->dev_flags instead of hdev->flags. HCI_INQUIRY is a bit that's > set on hdev->flags, not on hdev->dev_flags though. > > HCI_INQUIRY equals the integer 7, and in hdev->dev_flags, 7 means > HCI_BONDABLE, so we were actually checking for HCI_BONDABLE here. > > The mistake is only present in the synchronous code for starting an inquiry, > not in the async one. Also devices are typically bondable while doing an > inquiry, so that might be the reason why nobody noticed it so far. > > Signed-off-by: Jonas Dreßler <verdre@xxxxxxx> FWIIW, I agree with this analysis and the proposed fix looks correct to me. Reviewed-by: Simon Horman <horms@xxxxxxxxxx> I do wonder if it is appropriate to treat this as a bug fix - is there a use-visible problem? If so, the following seems appropriate to me. Fixes: abfeea476c68 ("Bluetooth: hci_sync: Convert MGMT_OP_START_DISCOVERY") ...