{"id":15962,"date":"2026-09-04T19:04:37","date_gmt":"2026-09-04T11:04:37","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-46274"},"modified":"2026-09-04T19:04:37","modified_gmt":"2026-09-04T11:04:37","slug":"cve-2026-46274","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-46274","title":{"rendered":"CVE-2026-46274 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nio-wq: check that the"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>io-wq: check that the predecessor is hashed in io_wq_remove_pending()<\/p>\n<p>io_wq_remove_pending() needs to fix up wq-&gt;hash_tail[] if the cancelled<br \/>\nwork was the tail of its hash bucket. When doing this, it checks whether<br \/>\nthe preceding entry in acct-&gt;work_list has the same hash value, but<br \/>\nnever checks that the predecessor is hashed at all. io_get_work_hash()<br \/>\nis simply atomic_read(&amp;work-&gt;flags) &gt;&gt; IO_WQ_HASH_SHIFT, and the hash<br \/>\nbits are never set for non-hashed work, so it returns 0. Thus, when a<br \/>\nhashed bucket-0 work is cancelled while a non-hashed work is its list<br \/>\npredecessor, the check spuriously passes and a pointer to the non-hashed<br \/>\nio_kiocb is stored in wq-&gt;hash_tail[0].<\/p>\n<p>Because non-hashed work is dequeued via the fast path in<br \/>\nio_get_next_work(), which never touches hash_tail[], the stale pointer<br \/>\nis never cleared. Therefore, after the non-hashed io_kiocb completes and<br \/>\nis freed back to req_cachep, wq-&gt;hash_tail[0] is a dangling pointer. The<br \/>\nio_wq is per-task (tctx-&gt;io_wq) and survives ring open\/close, so the<br \/>\ndangling pointer persists for the lifetime of the task; the next hashed<br \/>\nbucket-0 enqueue dereferences it in io_wq_insert_work() and<br \/>\nwq_list_add_after() writes through freed memory.<\/p>\n<p>Add the missing io_wq_is_hashed() check so a non-hashed predecessor<br \/>\nnever inherits a hash_tail[] slot.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>io-wq: check that the predecessor is hashed in io_wq_remove_pending()<\/p>\n<p>io_wq_remove_pending() needs to fix up wq-&gt;hash_tail[] if th<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-15962","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/15962","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=15962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}