{"id":29263,"date":"2026-09-25T20:32:17","date_gmt":"2026-09-25T12:32:17","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98109"},"modified":"2026-09-25T20:32:17","modified_gmt":"2026-09-25T12:32:17","slug":"cve-2026-98109","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98109","title":{"rendered":"CVE-2026-98109 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_core:"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: hci_core: Fix race condition during device registration<\/p>\n<p>In hci_register_dev(), the power_on work item is queued to<br \/>\nhdev-&gt;req_workqueue before initializing hdev-&gt;adv_monitors_idr and<br \/>\nregistering the MSFT extension via msft_register(). For devices marked with<br \/>\nquirks such as HCI_QUIRK_RAW_DEVICE, the HCI_UNCONFIGURED flag is set on<br \/>\nthe device. When the power_on work item runs concurrently on another CPU,<br \/>\nhci_power_on() detects that the device is unconfigured and immediately<br \/>\ninvokes hci_dev_do_close(), which calls msft_do_close().<\/p>\n<p>Concurrently, msft_register() allocates the msft structure and exposes it<br \/>\nto hdev-&gt;msft_data prior to calling mutex_init(&amp;msft-&gt;filter_lock). If<br \/>\nmsft_do_close() executes while hdev-&gt;msft_data is already assigned but the<br \/>\nmutex has not yet been initialized, mutex_lock(&amp;msft-&gt;filter_lock) operates<br \/>\non an uninitialized mutex, triggering a DEBUG_LOCKS warning:<\/p>\n<p>DEBUG_LOCKS_WARN_ON(lock-&gt;magic != lock)<br \/>\nWARNING: kernel\/locking\/mutex.c:625 at __mutex_lock_common<br \/>\nkernel\/locking\/mutex.c:625 [inline]<br \/>\nWARNING: kernel\/locking\/mutex.c:625 at __mutex_lock+0x12d8\/0x1550<br \/>\nkernel\/locking\/mutex.c:821<br \/>\n&#8230;<br \/>\nCall Trace:<\/p>\n<p> msft_do_close+0x308\/0x7b0 net\/bluetooth\/msft.c:693<br \/>\n hci_dev_close_sync+0x86b\/0x10a0 net\/bluetooth\/hci_sync.c:5522<br \/>\n hci_dev_do_close net\/bluetooth\/hci_core.c:499 [inline]<br \/>\n hci_power_on+0x32c\/0x750 net\/bluetooth\/hci_core.c:937<br \/>\n process_one_work kernel\/workqueue.c:3322 [inline]<br \/>\n process_scheduled_works+0xa8e\/0x14e0 kernel\/workqueue.c:3405<br \/>\n worker_thread+0x92d\/0xe10 kernel\/workqueue.c:3486<br \/>\n kthread+0x388\/0x470 kernel\/kthread.c:436<br \/>\n ret_from_fork+0x514\/0xb70 arch\/x86\/kernel\/process.c:158<br \/>\n ret_from_fork_asm+0x1a\/0x30 arch\/x86\/entry\/entry_64.S:245<\/p>\n<p>Fix this by moving the queue_work() call in hci_register_dev() to after<br \/>\nidr_init(&amp;hdev-&gt;adv_monitors_idr) and msft_register(hdev) so that device<br \/>\nstructures and extensions are fully initialized before asynchronous tasks<br \/>\ncan access them. Additionally, assign hdev-&gt;msft_data in msft_register()<br \/>\nonly after mutex_init(&amp;msft-&gt;filter_lock) has completed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: hci_core: Fix race condition during device registration<\/p>\n<p>In hci_register_dev(), the power_on work item is queued to<br \/>\nhdev<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29263","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=29263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}