{"id":17345,"date":"2026-09-05T02:31:01","date_gmt":"2026-09-04T18:31:01","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80841"},"modified":"2026-09-05T02:31:01","modified_gmt":"2026-09-04T18:31:01","slug":"cve-2026-80841","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80841","title":{"rendered":"CVE-2026-80841 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnet\/packet: defer vma"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net\/packet: defer vmalloc TX_RING free until skbs finish<\/p>\n<p>AF_PACKET TX_RING skbs keep a raw pointer to their ring frame. The skb<br \/>\npage references preserve page-backed ring blocks after pg_vec is freed,<br \/>\nbut they do not preserve a vmalloc mapping.<\/p>\n<p>tpacket_destruct_skb() currently drops the pending reference before<br \/>\nwriting the timestamp and TP_STATUS_AVAILABLE to the frame. Move the<br \/>\ndecrement after those stores. The smp_wmb() in __packet_set_status()<br \/>\norders the frame stores before the decrement.<\/p>\n<p>Also recheck pending TX frames under pg_vec_lock before non-closing<br \/>\nring replacement, so a racing send cannot add a pending skb between<br \/>\nthe initial check and the ring swap.<\/p>\n<p>Ring allocation can produce a mixture of page-backed and vmalloc-backed<br \/>\nblocks. Allocate deferred-work storage during TX ring setup when the<br \/>\nfirst vmalloc-backed block is encountered, and keep its pointer in the<br \/>\npg_vec allocation header. If allocation fails, return -ENOMEM from ring<br \/>\nsetup. On socket close, a non-NULL pointer identifies a vmalloc-backed<br \/>\nvector without a scan. If TX skbs remain, defer the whole vector to<br \/>\nsystem_long_wq.<\/p>\n<p>After pg_vec is detached, a late destructor can skip the pending<br \/>\ndecrement. Use socket write-memory accounting as the deferred lifetime<br \/>\ngate instead: an skb remains charged through its final sock_wfree(),<br \/>\nafter all ring-frame accesses. The delayed work retains a socket<br \/>\nreference and reschedules itself until no TX skbs remain.<\/p>\n<p>Move pending_refcnt release to packet_sock_destruct() so late skb<br \/>\ndestructors and deferred cleanup can safely use it after<br \/>\npacket_release(). Page-backed teardown remains synchronous, and no lock<br \/>\nis added to the TX completion hot path.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net\/packet: defer vmalloc TX_RING free until skbs finish<\/p>\n<p>AF_PACKET TX_RING skbs keep a raw pointer to their ring frame. The skb<br \/>\npa<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-17345","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/17345","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=17345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}