{"id":25962,"date":"2026-09-18T04:32:09","date_gmt":"2026-09-17T20:32:09","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93105"},"modified":"2026-09-18T04:32:09","modified_gmt":"2026-09-17T20:32:09","slug":"cve-2026-93105","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93105","title":{"rendered":"CVE-2026-93105 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nesp: do not unref man"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>esp: do not unref managed frag pages in esp_ssg_unref()<\/p>\n<p>esp_ssg_unref() releases the page references held on the source<br \/>\nscatterlist after the AEAD operation completes.  It calls<br \/>\nskb_page_unref() on every frag page for an out-of-place transform<br \/>\n(req-&gt;src != req-&gt;dst), and in the error path of esp_output_tail()<br \/>\n(already_unref == true) on the request&#8217;s own scatterlist.<\/p>\n<p>This is wrong when the skb carries managed frags<br \/>\n(SKBFL_MANAGED_FRAG_REFS).  Managed frags are owned by a zerocopy ubuf<br \/>\nand the skb does not hold a per-frag page reference; io_uring SEND_ZC<br \/>\nwith a registered buffer attaches the bvec pages this way via<br \/>\nio_sg_from_iter().  The rest of the stack honours this invariant:<br \/>\nskb_release_data() skips the per-frag unref when SKBFL_MANAGED_FRAG_REFS<br \/>\nis set, and skb_zcopy_managed() is the guard used at the other unref<br \/>\nsites.<\/p>\n<p>esp_ssg_unref() is missing that guard, so for a managed-frag skb it<br \/>\ndrops a page reference the skb never acquired.  This can underflow the<br \/>\npage reference count and free a page that is still in use.<\/p>\n<p>Guard the function with skb_zcopy_managed() so both unref paths are<br \/>\nskipped for managed-frag skbs, matching skb_release_data().<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>esp: do not unref managed frag pages in esp_ssg_unref()<\/p>\n<p>esp_ssg_unref() releases the page references held on the source<br \/>\nscatterlis<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-25962","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/25962","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=25962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}