CVE-2026-98109
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
Bluetooth: hci_core: Napraw sytuację wyścigu podczas rejestracji urządzenia
W funkcji hci_register_dev() element roboczy power_on jest ustawiany w kolejce
hdev->req_workqueue przed inicjalizacją hdev->adv_monitors_idr i
rejestracja rozszerzenia MSFT poprzez msft_register(). Dla urządzeń oznaczonych symbolem
dziwactwa, takie jak HCI_QUIRK_RAW_DEVICE, flaga HCI_UNCONFIGURED jest ustawiona na
urządzenie. Gdy element roboczy power_on działa jednocześnie na innym procesorze,
hci_power_on() natychmiast wykrywa, że urządzenie jest nieskonfigurowane
wywołuje hci_dev_do_close(), która wywołuje msft_do_close().
Jednocześnie msft_register() przydziela strukturę msft i udostępnia ją
do hdev->msft_data przed wywołaniem mutex_init(&msft->filter_lock). Jeśli
msft_do_close() jest wykonywana, gdy hdev->msft_data jest już przypisany, ale
mutex nie został jeszcze zainicjowany, działa mutex_lock(&msft->filter_lock).
na niezainicjowanym muteksie, wywołując ostrzeżenie DEBUG_LOCKS:
DEBUG_LOCKS_WARN_ON(blokada->magia != blokada)
OSTRZEŻENIE: jądro/locking/mutex.c:625 w __mutex_lock_common
jądro/blokowanie/mutex.c:625 [wbudowane]
OSTRZEŻENIE: jądro/locking/mutex.c:625 w __mutex_lock+0x12d8/0x1550
jądro/locking/mutex.c:821
...
Zadzwoń do śledzenia:
<ZADANIE>
msft_do_close+0x308/0x7b0 net/bluetooth/msft.c:693
hci_dev_close_sync+0x86b/0x10a0 net/bluetooth/hci_sync.c:5522
hci_dev_do_close net/bluetooth/hci_core.c:499 [wbudowane]
hci_power_on+0x32c/0x750 net/bluetooth/hci_core.c:937
Process_one_work kernel/workqueue.c:3322 [inline]
proces_scheduled_works+0xa8e/0x14e0 jądro/workqueue.c:3405
wątek_pracownika+0x92d/0xe10 jądro/workqueue.c:3486
kthread+0x388/0x470 jądro/kthread.c:436
ret_from_fork+0x514/0xb70 arch/x86/kernel/process.c:158
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
</ZADANIE>
Napraw ten problem, przenosząc wywołanie kolejki_work() w funkcji hci_register_dev() na później
idr_init(&hdev->adv_monitors_idr) i msft_register(hdev), aby to urządzenie
struktury i rozszerzenia są w pełni inicjowane przed zadaniami asynchronicznymi
może uzyskać do nich dostęp. Dodatkowo przypisz hdev->msft_data w msft_register()
dopiero po zakończeniu mutex_init(&msft->filter_lock).
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org