From: bugzilla-daemon@kernel.org
To: linux-bluetooth@vger.kernel.org
Subject: [Bug 218151] Bluetooth: Erratic HCI_Command_Status without Inquiry
Date: Wed, 22 Nov 2023 01:05:10 +0000 [thread overview]
Message-ID: <bug-218151-62941-pewFNA0j5Z@https.bugzilla.kernel.org/> (raw)
In-Reply-To: <bug-218151-62941@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=218151
--- Comment #4 from Si-Jie Bai (sy2239101@buaa.edu.cn) ---
(In reply to Bagas Sanjaya from comment #2)
> (In reply to Si-Jie Bai from comment #0)
> > Created attachment 305410 [details]
> > wireshark screenshot
> >
> > Our fuzzing tool finds a possible semantic bug in the Bluetooth system in
> > Linux 6.2:
> >
> > According to the core specification v5.4, the HCI_Inquiry command triggers
> > the BR/EDR Controller to enter Inquiry Mode, a process used for discovering
> > nearby BR/EDR Controllers. Furthermore, it is specified that an
> > HCI_Command_Status event should be sent to the Host when the BR/EDR
> > Controller has started the Inquiry process.
> >
> > In our testing, if a related HCI_Command_Status event is sent by the
> > controller without a preceding HCI_Inquiry command from the host, this
> could
> > lead to a failure in establishing Bluetooth connections.
> >
> > Through our examination and debugging of the Linux 6.2 source code, we have
> > identified the underlying cause of the observed phenomenon:
> >
> > (1.1) When the HCI_Command_Status event related to the HCI_Inquiry command
> > is received, the function hci_cs_inquiry (/net/bluetooth/hci_event.c:2289)
> > is called.
> >
> > (1.2) This leads to the execution of set_bit(HCI_INQUIRY, &hdev->flags);
> > (/net/bluetooth/hci_event.c:2298).
> >
> > (2.1) Upon initiating an ACL connection for the first time, the function
> > hci_acl_create_connection (/net/bluetooth/hci_conn.c:212) is called.
> >
> > (2.2) The result of test_bit(HCI_INQUIRY, &hdev->flags)
> > (/net/bluetooth/hci_conn.c:228) being true causes the connection's state to
> > change to BT_CONNECT2, and the HCI_Inquiry_Cancel command is sent.
> >
> > (3.1) When the HCI_Command_Complete event related to the HCI_Inquiry_Cancel
> > command is received, the function hci_cc_inquiry_cancel
> > (/net/bluetooth/hci_event.c:84) is called.
> >
> > (3.2) The Status field of the HCI_Command_Complete event being 0x0c results
> > in the execution of return rp->status; (/net/bluetooth/hci_event.c:104).
> >
> > (4.1) A timeout triggers hci_conn_timeout (/net/bluetooth/hci_conn.c:638),
> > which in turn calls hci_abort_conn (/net/bluetooth/hci_conn.c:2771).
> >
> > (4.2) This leads to the execution of case BT_CONNECT2:
> > (/net/bluetooth/hci_conn.c:2771), where the HCI_Reject_Connection_Request
> > command is sent.
> >
> > We are not sure whether this is a semantic bug or implementation feature in
> > the Linux kernel. Any feedback would be appreciated, thanks!
>
> Can you check latest mainline (currently v6.7-rc1)?
Thank you for your valuable input and feedback! I greatly appreciate your
response.
I have confirmed that the bug can be reproduced on the latest mainline and it
generates the same issue.
Comment3 has already provided a patch for this bug:
https://patchwork.kernel.org/project/bluetooth/patch/20231120151039.323068-1-luiz.dentz@gmail.com/
I have confirmed that the bug has been effectively resolved on the latest
mainline with this patch.
I sincerely appreciate your valuable input and solution once again. It has
greatly assisted us in the bug fixing process!
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are the assignee for the bug.
next prev parent reply other threads:[~2023-11-22 1:05 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-16 2:22 [Bug 218151] New: Bluetooth: Erratic HCI_Command_Status without Inquiry bugzilla-daemon
2023-11-16 2:27 ` [Bug 218151] " bugzilla-daemon
2023-11-16 2:42 ` bugzilla-daemon
2023-11-16 11:11 ` bugzilla-daemon
2023-11-20 15:23 ` bugzilla-daemon
2023-11-22 1:05 ` bugzilla-daemon [this message]
2023-11-22 1:06 ` bugzilla-daemon
2023-11-22 3:23 ` bugzilla-daemon
2023-11-22 8:28 ` bugzilla-daemon
2023-11-23 11:12 ` bugzilla-daemon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-218151-62941-pewFNA0j5Z@https.bugzilla.kernel.org/ \
--to=bugzilla-daemon@kernel.org \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.