CVE-2026-31771

Bluetooth: hci_event: move wake reason storage into validated event handlers

State
Published
Severity
8.1 High
Published
May 1, 2026
Updated
Oct 30, 2026
Reserved
Mar 9, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

Bluetooth: hci_event: move wake reason storage into validated event handlers

hci_store_wake_reason() is called from hci_event_packet() immediately after stripping the HCI event header but before hci_event_func() enforces the per-event minimum payload length from hci_ev_table. This means a short HCI event frame can reach bacpy() before any bounds check runs.

Rather than duplicating skb parsing and per-event length checks inside hci_store_wake_reason(), move wake-address storage into the individual event handlers after their existing event-length validation has succeeded. Convert hci_store_wake_reason() into a small helper that only stores an already-validated bdaddr while the caller holds hci_dev_lock(). Use the same helper after hci_event_func() with a NULL address to preserve the existing unexpected-wake fallback semantics when no validated event handler records a wake address.

Annotate the helper with __must_hold(&hdev->lock) and add lockdep_assert_held(&hdev->lock) so future call paths keep the lock contract explicit.

Call the helper from hci_conn_request_evt(), hci_conn_complete_evt(), hci_sync_conn_complete_evt(), le_conn_complete_evt(), hci_le_adv_report_evt(), hci_le_ext_adv_report_evt(), hci_le_direct_adv_report_evt(), hci_le_pa_sync_established_evt(), and hci_le_past_received_evt().

Scores

CVSSScoreVectorSource
3.18.1 HighCVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:HLinux

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • 2f20216c1d6fe17c1a224f658be0dc6fab2269c7 to before fbea63d0d301edd4a42f4390b49b8519d78b802dAffected
  • 2f20216c1d6fe17c1a224f658be0dc6fab2269c7 to before 1e4b738dd0d0f7b237686167706badad9d30649cAffected
  • 2f20216c1d6fe17c1a224f658be0dc6fab2269c7 to before ac7889b0fe441e4ef892c40b1d002e91f93fa4aeAffected
  • 2f20216c1d6fe17c1a224f658be0dc6fab2269c7 to before dbc8b8d33c9e19e17e8b8b1361bbb46e2983f5f2Affected
  • 2f20216c1d6fe17c1a224f658be0dc6fab2269c7 to before 86c8d07a64d553c41e213b52650020010f9ef23eAffected
  • 2f20216c1d6fe17c1a224f658be0dc6fab2269c7 to before 2b2bf47cd75518c36fa2d41380e4a40641cc89cdAffected
LinuxLinux
  • 5.10Affected
  • before 5.10Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.114 through 6.12.*Not affected
  • 6.18.57 through 6.18.*Not affected
  • 6.19.12 through 6.19.*Not affected
  • 7.0 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.