{"id":29059,"date":"2026-09-25T20:31:46","date_gmt":"2026-09-25T12:31:46","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97903"},"modified":"2026-09-25T20:31:46","modified_gmt":"2026-09-25T12:31:46","slug":"cve-2026-97903","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97903","title":{"rendered":"CVE-2026-97903 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nexit: hold a referenc"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>exit: hold a reference to thread_pid across proc_flush_pid<\/p>\n<p>Commit 0a36bad01731 (&#8220;release_task: kill the no longer needed<br \/>\nget\/put_pid(thread_pid)&#8221;) removed the reference around proc_flush_pid().<br \/>\nIt assumed that free_pids(post.pids) at the end of release_task() would<br \/>\nkeep thread_pid alive until then.<\/p>\n<p>That assumption is wrong.  __change_pid() only records a detached PID in<br \/>\npost.pids when pid_has_task() is false for every PIDTYPE.  If another task<br \/>\nstill uses the exiting task&#8217;s PID as its process group or session ID,<br \/>\n__unhash_process() removes the exiting task&#8217;s PIDTYPE_PID link but leaves<br \/>\nthe PID out of post.pids.  release_task() therefore holds no reference to<br \/>\nit after dropping tasklist_lock.<\/p>\n<p>The other task can then remove the remaining PIDTYPE links.  Its<br \/>\nfree_pids() call schedules delayed_put_pid(), and the RCU callback can free<br \/>\nthe PID before the first release_task() reaches proc_flush_pid().<\/p>\n<p>An unprivileged reproducer races wait4(-1) against setsid() to trigger this<br \/>\nordering.  Three of three fresh v7.2 KASAN boots reported:<\/p>\n<p>    BUG: KASAN: slab-use-after-free in<br \/>\n    proc_invalidate_siblings_dcache+0x3e2\/0x3f0<br \/>\n    Read of size 8 by task h7_pid_reaper\/1921<\/p>\n<p>    Call Trace:<br \/>\n     proc_invalidate_siblings_dcache<br \/>\n     release_task<br \/>\n     wait_consider_task<br \/>\n     __do_wait<br \/>\n     do_wait<br \/>\n     kernel_wait4<\/p>\n<p>    Freed by task 0:<br \/>\n     kmem_cache_free<br \/>\n     put_pid<br \/>\n     delayed_put_pid<br \/>\n     rcu_core<\/p>\n<p>    Last potentially related work creation:<br \/>\n     __call_rcu_common<br \/>\n     free_pids<br \/>\n     ksys_setsid<\/p>\n<p>KASAN identified a 144-byte object from the pid cache and located the bad<br \/>\nread 80 bytes into the freed object, matching pid-&gt;inodes.  With an<br \/>\nexplicit reference, three of three fresh boots completed without a KASAN<br \/>\nreport.  The concurrent RCU callback dropped its reference while<br \/>\nproc_flush_pid() was protected, and the balancing put_pid() performed the<br \/>\nfinal free afterward.<\/p>\n<p>Take a reference before __unhash_process() clears p-&gt;thread_pid and release<br \/>\nit after proc_flush_pid() completes.<\/p>\n<p>A tested source reproducer is available privately on request.  No<br \/>\ncontrolled read or write, information leak, or privilege escalation is<br \/>\nclaimed.  The mainline patch applies directly to v6.19.y and newer;<br \/>\nv6.16.y through v6.18.y need a context-adjusted backport.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>exit: hold a reference to thread_pid across proc_flush_pid<\/p>\n<p>Commit 0a36bad01731 (&#8220;release_task: kill the no longer needed<br \/>\nget\/put_p<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29059","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29059","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=29059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}