{"id":41160,"date":"2026-10-19T00:32:24","date_gmt":"2026-10-18T16:32:24","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98688"},"modified":"2026-10-19T00:32:24","modified_gmt":"2026-10-18T16:32:24","slug":"cve-2026-98688","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98688","title":{"rendered":"CVE-2026-98688 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nthunderbolt: Fix NULL"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>thunderbolt: Fix NULL dereference in tb_remove_work()<\/p>\n<p>There is a slight race between tb_remove_work() and tb_domain_remove()<br \/>\nwhich leads to dereferencing a NULL tb-&gt;root_switch pointer inside<br \/>\ntb_free_unplugged_xdomains():<\/p>\n<p>        Thread A                            Thread B<\/p>\n<p>  tb_remove_work()<br \/>\n                                    tb_domain_remove()<br \/>\n                                      mutex_lock(&amp;tb-&gt;lock)<br \/>\n                                      tb_stop()<br \/>\n                                        \/* doesn&#8217;t cancel a running callback *\/<br \/>\n                                        cancel_delayed_work(&amp;tcm-&gt;remove_work)<br \/>\n                                        &#8230;<br \/>\n                                        tb_switch_remove(tb-&gt;root_switch)<br \/>\n                                        tb-&gt;root_switch = NULL<br \/>\n                                      mutex_unlock(&amp;tb-&gt;lock)<br \/>\n    mutex_lock(&amp;tb-&gt;lock)<br \/>\n    &#8230;<br \/>\n    \/* without checking -&gt;root_switch *\/<br \/>\n    tb_free_unplugged_xdomains(tb-&gt;root_switch)<br \/>\n    mutex_unlock(&amp;tb-&gt;lock)<\/p>\n<p>Commit a8937f35cf39 (&#8220;thunderbolt: Remove XDomain from the bus without<br \/>\nholding tb-&gt;lock&#8221;) doesn&#8217;t seem right to move tb_free_unplugged_xdomains()<br \/>\nout of the &amp;tb-&gt;lock section and the check for tb-&gt;root_switch, in<br \/>\nparticular.  It states:<\/p>\n<p>  For this reason separate removing the XDomain from the topology data<br \/>\n  structures (where we need the lock) from unregistering the device from<br \/>\n  the bus (where remove callbacks of the drivers are being called).<\/p>\n<p>tb_free_unplugged_xdomains() belongs to the former group of functions<br \/>\nrequiring the lock.  And it also calls tb_xdomain_remove() which should<br \/>\nonly be called with &amp;tb-&gt;lock held.<\/p>\n<p>Found by Linux Verification Center (linuxtesting.org) with Svace static<br \/>\nanalysis tool.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>thunderbolt: Fix NULL dereference in tb_remove_work()<\/p>\n<p>There is a slight race between tb_remove_work() and tb_domain_remove()<br \/>\nwhich<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41160","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41160","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=41160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}