{"id":29131,"date":"2026-09-25T20:31:56","date_gmt":"2026-09-25T12:31:56","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97975"},"modified":"2026-09-25T20:31:56","modified_gmt":"2026-09-25T12:31:56","slug":"cve-2026-97975","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97975","title":{"rendered":"CVE-2026-97975 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_sysfs:"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: hci_sysfs: Fix NULL pointer dereference in device_del()<\/p>\n<p>A NULL pointer dereference in klist_put() occurs when a child device (such<br \/>\nas a BNEP network device in bnep_session) is concurrently being<br \/>\nunregistered while hci_conn_del_sysfs() reparents child devices.<\/p>\n<p>This is caused by a race condition between hci_conn_del_sysfs() and<br \/>\nconcurrent child device unregistration (e.g. bnep_session calling<br \/>\nunregister_netdev()). During device unregistration, device_del() snapshots<br \/>\na non-NULL parent pointer. Concurrently, hci_conn_del_sysfs() finds the<br \/>\nchild device using device_find_any_child() and calls device_move() to<br \/>\nreparent it to NULL, which removes the node from its parent&#8217;s klist and<br \/>\nclears knode_parent. Subsequently, device_del() calls<br \/>\nklist_del(&amp;dev-&gt;p-&gt;knode_parent) using the stale parent snapshot, causing<br \/>\nklist_put() to dereference knode_klist(n)-&gt;put on an already removed node,<br \/>\nresulting in a NULL pointer dereference.<\/p>\n<p>This race was introduced by commit 27aabf27fd01 (&#8220;Bluetooth: fix<br \/>\nuse-after-free in device_for_each_child()&#8221;), which replaced<br \/>\ndevice_find_child(&#8230;, __match_tty) with device_find_any_child() in<br \/>\nhci_conn_del_sysfs(). That change was intended to avoid a use-after-free<br \/>\nwhere conn-&gt;dev outlived its parent hdev-&gt;dev when child devices held<br \/>\nreferences to conn-&gt;dev, because conn-&gt;dev only held a reference to<br \/>\nhdev-&gt;dev while registered in sysfs.<\/p>\n<p>Fix the issue properly by taking an explicit reference to the parent device<br \/>\nwith get_device(&amp;hdev-&gt;dev) in hci_conn_init_sysfs() and dropping it with<br \/>\nput_device(parent) in bt_link_release() when the conn device is freed. This<br \/>\nensures that hdev-&gt;dev remains valid for the entire lifecycle of conn-&gt;dev,<br \/>\nresolving the underlying use-after-free. With the parent reference held<br \/>\nproperly, restore the __match_tty filter in hci_conn_del_sysfs() so that<br \/>\ndevice_move() is only invoked on persistent RFCOMM TTY devices as<br \/>\noriginally intended, eliminating the race condition with unregistering<br \/>\nnetwork devices.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: hci_sysfs: Fix NULL pointer dereference in device_del()<\/p>\n<p>A NULL pointer dereference in klist_put() occurs when a child d<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29131","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29131","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=29131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}