---
id: CVE-2026-98737
title: 'Bluetooth: hci_sync: Fix inquiry cache use-after-free'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  Bluetooth: hci_sync: Fix inquiry cache use-after-free

  The sync command worker holds hdev->req_lock, but inquiry-cache updates
  and flushes use hdev->lock. Both hci_acl_…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= cf75ad8b41d2aa06f98f365d42a3ae8b059daddd <
    52edf1c0e59dea37b8368c4a2559dca96b2fdfea
  - >-
    Linux >= cf75ad8b41d2aa06f98f365d42a3ae8b059daddd <
    333257e6e4a7bcaaea82fd357121d0f1e6b76c7b
  - >-
    Linux >= cf75ad8b41d2aa06f98f365d42a3ae8b059daddd <
    a642f498f0b08f2aa9f4a69468db92f57a72349d
  - >-
    Linux >= cf75ad8b41d2aa06f98f365d42a3ae8b059daddd <
    8ed67535fdff40ca652bcd4ac7da68d11d01bd34
  - Linux 5.17
published: '2026-10-18'
updated: '2026-10-18'
sourceUpdated: '2026-10-18T15:47:14.936Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-98737'
references:
  - url: 'https://git.kernel.org/stable/c/52edf1c0e59dea37b8368c4a2559dca96b2fdfea'
  - url: 'https://git.kernel.org/stable/c/333257e6e4a7bcaaea82fd357121d0f1e6b76c7b'
  - url: 'https://git.kernel.org/stable/c/a642f498f0b08f2aa9f4a69468db92f57a72349d'
  - url: 'https://git.kernel.org/stable/c/8ed67535fdff40ca652bcd4ac7da68d11d01bd34'
tags:
  - cve.org
ingestedAt: '2026-10-18T16:47:32.503Z'
---

## Overview

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

Bluetooth: hci_sync: Fix inquiry cache use-after-free

The sync command worker holds hdev->req_lock, but inquiry-cache updates
and flushes use hdev->lock. Both hci_acl_create_conn_sync() and
hci_stop_discovery_sync() look up entries and read their fields without
taking hdev->lock.

After either lookup returns, a concurrent HCIINQUIRY ioctl can acquire
hdev->lock and flush the cache, freeing the entry. The worker then reads
the freed entry while preparing a create-connection or remote-name-cancel
command. The list traversal also races with cache updates and removal.

KASAN reported these accesses:

  BUG: KASAN: slab-use-after-free in hci_acl_create_conn_sync+0x5f1/0x650
  Workqueue: hci0 hci_cmd_sync_work
  Call Trace:
   hci_acl_create_conn_sync+0x5f1/0x650
   hci_cmd_sync_work+0x13c/0x290

  Allocated by task 90:
   hci_inquiry_cache_update+0x3e6/0x7d0
   hci_inquiry_result_evt+0x3cb/0x560

  Freed by task 93:
   hci_inquiry_cache_flush+0x111/0x2b0
   hci_inquiry+0x2f2/0x780
   hci_sock_ioctl+0x269/0x5f0

  BUG: KASAN: slab-use-after-free in hci_stop_discovery_sync+0x3b1/0x3c0
  Workqueue: hci0 hci_cmd_sync_work
  Call Trace:
   hci_stop_discovery_sync+0x3b1/0x3c0
   hci_cmd_sync_work+0x173/0x300

  Allocated by task 86:
   hci_inquiry_cache_update+0x483/0x940
   hci_inquiry_result_evt+0x3cb/0x560

  Freed by task 91:
   hci_inquiry_cache_flush+0x13e/0x2f0
   hci_inquiry+0x2f2/0x780
   hci_sock_ioctl+0x269/0x5f0

Hold hdev->lock across each lookup and all reads from its result. Copy the
remote address before unlocking so discovery cancellation does not retain
a cache entry pointer. Release the lock before sending synchronous HCI
commands, since their completion handlers may need the same lock.

## Affected

- `Linux >= cf75ad8b41d2aa06f98f365d42a3ae8b059daddd < 52edf1c0e59dea37b8368c4a2559dca96b2fdfea`
- `Linux >= cf75ad8b41d2aa06f98f365d42a3ae8b059daddd < 333257e6e4a7bcaaea82fd357121d0f1e6b76c7b`
- `Linux >= cf75ad8b41d2aa06f98f365d42a3ae8b059daddd < a642f498f0b08f2aa9f4a69468db92f57a72349d`
- `Linux >= cf75ad8b41d2aa06f98f365d42a3ae8b059daddd < 8ed67535fdff40ca652bcd4ac7da68d11d01bd34`
- `Linux 5.17`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
