CVE-2026-89569

Bluetooth: RFCOMM: serialize security confirmation handling

State
Published
Severity
8.8 High
Published
Sep 11, 2026
Updated
Oct 19, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

Description

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

Bluetooth: RFCOMM: serialize security confirmation handling

rfcomm_security_cfm() looks up a session on session_list and then walks its DLC list without holding rfcomm_mutex. Since RFCOMM session teardown uses rfcomm_mutex, krfcommd can close and free the same session and DLCs concurrently:

hci_rx_work krfcommd ----------- --------- rfcomm_session_get() rfcomm_lock() rfcomm_session_close() rfcomm_dlc_unlink() rfcomm_session_del() kfree(s) rfcomm_unlock() walk s->dlcs

The callback can then read a freed session list head and touch freed DLCs while updating their flags or timers.

Serialize the session lookup and DLC traversal in rfcomm_security_cfm() with rfcomm_mutex. This matches the existing RFCOMM session lifetime rules and prevents concurrent rfcomm_session_del() / rfcomm_dlc_unlink() from tearing the objects down while the callback is using them.

KASAN reported:

BUG: KASAN: slab-use-after-free in rfcomm_security_cfm+0x41c/0x440 Read of size 8 at addr ffff888111fb3960 by task kworker/u17:1/89 Workqueue: hci0 hci_rx_work Call Trace: rfcomm_security_cfm+0x41c/0x440 hci_encrypt_cfm+0x139/0x590 hci_encrypt_change_evt+0x37b/0xc40 hci_event_packet+0x71b/0xb20 hci_rx_work+0x293/0x730 Allocated by task 69: rfcomm_session_add+0x9e/0x2f0 rfcomm_run+0x44b/0x41e0 Freed by task 69: kfree+0x131/0x3c0 rfcomm_session_del+0x188/0x220 rfcomm_run+0x1985/0x41e0

Scores

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

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 08c30aca9e698faddebd34f81e1196295f9dc063 to before 62ce8b33eb238cf18c15207332fbdc26d858f592Affected
  • 08c30aca9e698faddebd34f81e1196295f9dc063 to before 3873f3449701b3dc98cba577923be6493598e7a1Affected
  • 08c30aca9e698faddebd34f81e1196295f9dc063 to before 7ded3264106418c6456ccceaafd9fda596ce12c3Affected
  • 08c30aca9e698faddebd34f81e1196295f9dc063 to before 82425b14f0fb22e46cfddc56d6465570f5ed0ce6Affected
  • 08c30aca9e698faddebd34f81e1196295f9dc063 to before 1b7841ffad08e911e8c4b9470f3fa08423568940Affected
  • 08c30aca9e698faddebd34f81e1196295f9dc063 to before 946d76db77ee5f922968ce558629ae47b381e3fcAffected
  • 08c30aca9e698faddebd34f81e1196295f9dc063 to before fbf7961964a6e93360179f64712320ae9a1e9577Affected
  • 08c30aca9e698faddebd34f81e1196295f9dc063 to before 759c185d0bbdb131357408f50b8735e04ed3caffAffected
LinuxLinux
  • 3.10Affected
  • before 3.10Not affected
  • 5.10.270 through 5.10.*Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.109 through 6.12.*Not affected
  • 6.18.50 through 6.18.*Not affected
  • 7.2.4 through 7.2.*Not affected
  • 7.3 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.