{"id":6759,"date":"2026-09-04T18:49:16","date_gmt":"2026-09-04T10:49:16","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72071"},"modified":"2026-09-04T18:49:16","modified_gmt":"2026-09-04T10:49:16","slug":"cve-2026-72071","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72071","title":{"rendered":"CVE-2026-72071 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ntracing\/user_events:"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tracing\/user_events: Fix use-after-free in user_event_mm_dup()<\/p>\n<p>user_event_mm_dup() walks the parent mm&#8217;s enabler list locklessly under<br \/>\nrcu_read_lock() during fork() (from copy_process()); it does not take<br \/>\nevent_mutex:<\/p>\n<p>\trcu_read_lock();<br \/>\n\tlist_for_each_entry_rcu(enabler, &amp;old_mm-&gt;enablers, mm_enablers_link)<br \/>\n\t\tenabler-&gt;event = user_event_get(orig-&gt;event);<\/p>\n<p>user_event_enabler_destroy() removes an enabler from that list with<br \/>\nlist_del_rcu() and then, without waiting for a grace period, drops the<br \/>\nenabler&#8217;s user_event reference with user_event_put() and frees the enabler<br \/>\nwith kfree(). A reader that loaded the enabler before the list_del_rcu()<br \/>\ncan still be walking it, which leads to two use-after-frees:<\/p>\n<p> &#8211; kfree(enabler) frees the enabler while that reader dereferences<br \/>\n   enabler-&gt;event.<\/p>\n<p> &#8211; user_event_put() may drop the last reference to the user_event, which<br \/>\n   is then freed (via delayed_destroy_user_event() on a work queue), while<br \/>\n   the same reader does user_event_get(orig-&gt;event) on it.<\/p>\n<p>Both are reachable by an unprivileged task that can open user_events_data:<br \/>\none multithreaded process that registers an enabler and then concurrently<br \/>\nunregisters it and calls fork() triggers the race. KASAN reports a<br \/>\nslab-use-after-free in user_event_mm_dup() during clone(), with a<br \/>\n&#8220;refcount_t: addition on 0&#8221; warning when the user_event is freed.<\/p>\n<p>The enabler use-after-free was found first; the user_event one was reported<br \/>\nby XIAO WU, and the earlier enabler-only fix did not address it.<\/p>\n<p>Defer both the user_event_put() and the kfree(enabler) to a work item<br \/>\nqueued with queue_rcu_work(), so they run only after an RCU grace period,<br \/>\nonce all readers walking the enabler list have finished. The put must run<br \/>\nin process context because user_event_put() takes event_mutex on the last<br \/>\nreference, so a work queue is used rather than call_rcu(). The now-unlocked<br \/>\nput lets the locked argument of user_event_enabler_destroy() be removed;<br \/>\nall callers are updated.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tracing\/user_events: Fix use-after-free in user_event_mm_dup()<\/p>\n<p>user_event_mm_dup() walks the parent mm&#8217;s enabler list locklessly u<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6759","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6759","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=6759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}