{"id":33329,"date":"2026-10-06T20:31:47","date_gmt":"2026-10-06T12:31:47","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98260"},"modified":"2026-10-06T20:31:47","modified_gmt":"2026-10-06T12:31:47","slug":"cve-2026-98260","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98260","title":{"rendered":"CVE-2026-98260 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nexec: Cleanup POSIX t"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>exec: Cleanup POSIX timers right after de_thread()<\/p>\n<p>A per-thread CPU timer holds a reference to the PID of the thread it is<br \/>\nattached to and, while it is armed, its node is queued in that thread&#8217;s<br \/>\nposix_cputimers. The task is looked up by that PID.<\/p>\n<p>When a non-leader thread exec()s, de_thread() changes which task owns<br \/>\nthat PID. pid_task(timer-&gt;it.cpu.pid, PIDTYPE_PID) then returns NULL,<br \/>\nbut the node is still queued on tsk, which is alive. timer_lock_sighand()<br \/>\ntakes a failed lookup to mean that the node is already dequeued, so it<br \/>\nhas nothing to undo.<\/p>\n<p>begin_new_exec() calls posix_cpu_timers_exit(me) right after<br \/>\nexec_task_namespaces() and that removes the leftover node, so the state<br \/>\nnormally stays invisible. But bprm-&gt;point_of_no_return is set before<br \/>\nde_thread(), so if unshare_files(), set_mm_exe_file(), exec_mmap() or<br \/>\nexec_task_namespaces() fails, the task dies before it gets there.<br \/>\nexit_itimers() then frees the k_itimer while its node is still queued,<br \/>\nand reaping tsk later erases that freed node from the rbtree.<\/p>\n<p>In short:<\/p>\n<p>      the non-leader thread B           the parent<\/p>\n<p>  timer_create(CLOCK_THREAD_CPUTIME_ID)<br \/>\n  timer_settime()<br \/>\n    arm_timer()            \/\/ the node is queued on B<br \/>\n  execve()<br \/>\n    de_thread(B)<br \/>\n      exchange_tids(B, leader)  \/\/ B&#8217;s PID now belongs to the leader<br \/>\n      release_task(leader)<br \/>\n        __exit_signal(leader)<br \/>\n          posix_cpu_timers_exit(leader)  \/\/ cleans leader&#8217;s queue, not B&#8217;s<br \/>\n          __unhash_process(leader)  \/\/ that PID has no task anymore<br \/>\n    exec_mmap()<br \/>\n      mmap_read_lock_killable(old_mm)<br \/>\n                                kill(B, SIGKILL)<br \/>\n      \/\/ -EINTR<br \/>\n  get_signal()<br \/>\n    do_exit()<br \/>\n      exit_itimers()<br \/>\n        posix_timer_delete()<br \/>\n          posix_cpu_timer_del()<br \/>\n        posix_timer_unhash_and_free()  \/\/ freed while still queued<br \/>\n                                wait4()<br \/>\n                                  release_task(B)<br \/>\n                                    posix_cpu_timers_exit(B)<br \/>\n                                      cleanup_timerqueue()<br \/>\n                                        timerqueue_del()  \/\/ use-after-free<\/p>\n<p>Move the POSIX timer cleanup right after de_thread() before any of the<br \/>\nlater failure conditions brings the task into do_exit().<\/p>\n<p>[ tglx: Move the cleanup right after de_thread() ]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>exec: Cleanup POSIX timers right after de_thread()<\/p>\n<p>A per-thread CPU timer holds a reference to the PID of the thread it is<br \/>\nattache<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33329","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33329","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=33329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}