-

CVE-2026-93247

Bluetooth: mgmt: fix 'hdev->discovery.uuids' NULL dereference

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

Bluetooth: mgmt: fix 'hdev->discovery.uuids' NULL dereference

'uuid_count' member of struct 'discovery_state' is assigned and read
without any locks, so there is a chance of situation when
uuid_count != 0, but uuids is NULL and there will be NULL pointer
dereference.

Possible race:
'hci_update_passive_scan_sync'
  'hci_discovery_filter_clear'
    hdev->discovery.uuid_count = 0;
      <----------------------preempted----------------------------->
                        'start_service_discovery'
                          // Set uuid_count to value != 0
                          hdev->discovery.uuid_count = uuid_count;
                          hdev->discovery.uuids = kmemdup(...);
      <----------------------preempted----------------------------->
    spin_lock(&hdev->discovery.lock);
    kfree(hdev->discovery.uuids);
    hdev->discovery.uuids = NULL;
    spin_unlock(&hdev->discovery.lock);

Now uuids == NULL and uuid_count != 0.
So 'mgmt_device_found' -> 'is_filter_match' -> 'eir_has_uuids' receives
non consistent discovery state, where NULL dereference of uuids happens.

To fix it let's add discovery.lock around every read/write of uuid_count,
uuids pair of struct members. It is also important to assign uuid_count
value only after success kmemdup() allocation in
start_service_discovery(), otherwise uuids is NULL, because kmemdup failed,
but uuid_count is already assigned to non zero value.

The following panic happens:

[ ] ------------[ cut here ]------------
[ ] Unable to handle kernel NULL pointer dereference at virtual
address 0000000000000000
[ ] Internal error: Oops: 0000000096000006 [#1] PREEMPT SMP
[ ] CPU: 0 PID: 15056 Comm: kworker/u9:2
[ ] Workqueue: hci0 hci_rx_work
[ ] pstate: 10400009 (nzcV daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ ] pc : eir_has_uuids+0x2d8/0x590
[ ] lr : is_filter_match+0x258/0x320
...
[ ] Call trace:
[ ]  eir_has_uuids+0x2d8/0x590
[ ]  is_filter_match+0x258/0x320
[ ]  mgmt_device_found+0x5b0/0xafc
[ ]  process_adv_report.part.0+0x8c8/0xf14
[ ]  hci_le_adv_report_evt+0x338/0x3f0
[ ]  hci_le_meta_evt+0x1f0/0x4c8
[ ]  hci_event_packet+0x440/0xc9c
[ ]  hci_rx_work+0x44c/0xaf8
[ ]  process_one_work+0x54c/0x103c
[ ]  worker_thread+0x6c4/0x10c4
[ ]  kthread+0x274/0x2ec
[ ]  ret_from_fork+0x10/0x20
[ ] Code: 14000004 91004021 eb14003f 54000180 (f9400024)
[ ] ---[ end trace 0000000000000000 ]---
Daten sind bereitgestellt durch das CVE Programm von einer CVE Numbering Authority (CNA) (Unstrukturiert).
HerstellerLinux
≫
Produkt Linux
Default Statusunaffected
Version 86f3dcd1f331cfd4fd7ec88906955134ec51afbe
Version < f02c01ccd12cb2b8a290077d4c90f29a6e109b16
Status affected
Version 7ce9bb0b95fc280e9212b8922590c492ca1d9c39
Version < bbd262d2d750b67b15a5e1008d3848309c87e7a7
Status affected
Version 16852eccbdfaf41a666705e3f8be55cf2864c5ca
Version < 18fda026a13c5abd6c1e0dfd3549f490b73378fb
Status affected
Version 2935e556850e9c94d7a00adf14d3cd7fe406ac03
Version < c3f63610bceaa182e4683b23cc47baf36b5f1496
Status affected
Version 2935e556850e9c94d7a00adf14d3cd7fe406ac03
Version < ee2135a14fb2a3e176149122764d293f0796b1eb
Status affected
Version 2935e556850e9c94d7a00adf14d3cd7fe406ac03
Version < 59eecbe2f2f38d8f3e1104bd11da97f9a2c58998
Status affected
Version a351ff6b8ecca4229afaa0d98042bead8de64799
Status affected
Version f8069f34c4c976786ded97498012225af87435d7
Status affected
Version 6.1.159
Version < 6.1.188
Status affected
Version 6.6.117
Version < 6.6.157
Status affected
Version 6.12.42
Version < 6.12.110
Status affected
Version 6.15.10
Version < 6.16
Status affected
Version 6.16.1
Version < 6.17
Status affected
HerstellerLinux
≫
Produkt Linux
Default Statusaffected
Version 6.17
Status affected
Version 0
Version < 6.17
Status unaffected
Version <= 6.1.*
Version 6.1.188
Status unaffected
Version <= 6.6.*
Version 6.6.157
Status unaffected
Version <= 6.12.*
Version 6.12.110
Status unaffected
Version <= 6.18.*
Version 6.18.52
Status unaffected
Version <= 7.2.*
Version 7.2.6
Status unaffected
Version <= *
Version 7.3-rc1
Status unaffected
VulnDex Vulnerability Enrichment
Diese Information steht angemeldeten Benutzern zur Verfügung. Login Login
Zu dieser CVE wurde keine Warnung gefunden.
EPSS Metriken
Typ Quelle Score Percentile
EPSS FIRST.org 0.21% 0.094
CVSS Metriken
Quelle Base Score Exploit Score Impact Score Vector String
Es wurden noch keine Informationen zu CWE veröffentlicht.
https://git.kernel.org/stable/c/f02c01ccd12cb2b8a290077d4c90f29a6e109b16
https://git.kernel.org/stable/c/bbd262d2d750b67b15a5e1008d3848309c87e7a7
https://git.kernel.org/stable/c/18fda026a13c5abd6c1e0dfd3549f490b73378fb
https://git.kernel.org/stable/c/c3f63610bceaa182e4683b23cc47baf36b5f1496
https://git.kernel.org/stable/c/ee2135a14fb2a3e176149122764d293f0796b1eb
https://git.kernel.org/stable/c/59eecbe2f2f38d8f3e1104bd11da97f9a2c58998