{"id":21429,"date":"2026-09-12T04:31:10","date_gmt":"2026-09-11T20:31:10","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89507"},"modified":"2026-09-12T04:31:10","modified_gmt":"2026-09-11T20:31:10","slug":"cve-2026-89507","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89507","title":{"rendered":"CVE-2026-89507 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA\/ucma: Lock the h"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>RDMA\/ucma: Lock the handler in ucma_write_cm_event()<\/p>\n<p>ctx-&gt;file may only be changed under the handler lock and the xa_lock, which<br \/>\nis what stops uevents being queued for a ctx while ucma_migrate_id() moves<br \/>\nit to another file.  The CM core takes that lock before invoking<br \/>\nucma_event_handler(), but the write() paths that queue uevents themselves<br \/>\ndo not.<\/p>\n<p>ucma_write_cm_event() re-reads ctx-&gt;file for each of its four dereferences,<br \/>\nso ucma_migrate_id() can swap it mid-sequence:<\/p>\n<p>\tmutex_lock(&amp;ctx-&gt;file-&gt;mut);\t\t\t\/* file A *\/<br \/>\n\tlist_add_tail(&amp;uevent-&gt;list, &amp;ctx-&gt;file-&gt;event_list);\t\/* file B *\/<br \/>\n\tmutex_unlock(&amp;ctx-&gt;file-&gt;mut);\t\t\t\/* file B *\/<br \/>\n\twake_up_interruptible(&amp;ctx-&gt;file-&gt;poll_wait);\t\/* file B *\/<\/p>\n<p>The window is the mutex_lock() itself: the writer sleeps in it while the<br \/>\nmigration reassigns ctx-&gt;file.  The list_add_tail() then runs on file B&#8217;s<br \/>\nevent_list holding only file A&#8217;s mutex:<\/p>\n<p>  list_add corruption. prev-&gt;next should be next (ffff888101320f30),<br \/>\n    but was ffff88814a08c418. (prev=ffff88814a075c18).<br \/>\n  kernel BUG at lib\/list_debug.c:32!<br \/>\n  Call Trace:<br \/>\n   ucma_write_cm_event+0x36e\/0x5e0<\/p>\n<p>and file A&#8217;s mut is left held forever, wedging its next writer in D state.<br \/>\nThe uevent is also stranded on a list ucma_cleanup_ctx_events() will not<br \/>\nwalk, so it outlives its context.  \/dev\/infiniband\/rdma_cm is 0666 and no<br \/>\nRDMA device is involved, so an unprivileged user reaches all of this.<\/p>\n<p>Take the handler lock, as ucma_cleanup_mc_events() does; ctx-&gt;cm_id is<br \/>\npinned by the ucma_get_ctx() reference.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>RDMA\/ucma: Lock the handler in ucma_write_cm_event()<\/p>\n<p>ctx-&gt;file may only be changed under the handler lock and the xa_lock, which<br \/>\ni<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21429","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21429","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=21429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}