UBUNTU-CVE-2026-93105: High severity ubuntu/linux-azure vulnerability
In the Linux kernel, the following vulnerability has been resolved: esp: do not unref managed frag pages in espssgunref() espssgunref() releases the page references held on the source scatterlist after the AEAD operation completes. It calls skbpageunref() on every frag page for an out-of-place transform (req->src != req->dst), and in the error path of espoutputtail() (alreadyunref == true) on the request's own scatterlist. This is wrong when the skb carries managed frags (SKBFLMANAGEDFRAGREFS). Managed frags are owned by a zerocopy ubuf and the skb does not hold a per-frag page reference; iouring SENDZC with a registered buffer attaches the bvec pages this way via iosgfromiter(). The rest of the stack honours this invariant: skbreleasedata() skips the per-frag unref when SKBFLMANAGEDFRAGREFS is set, and skbzcopymanaged() is the guard used at the other unref sites. espssgunref() is missing that guard, so for a managed-frag skb it drops a page reference the skb never acquired. This can underflow the page reference count and free a page that is still in use. Guard the function with skbzcopymanaged() so both unref paths are skipped for managed-frag skbs, matching skbreleasedata().
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Guard esp_ssg_unref() with skb_zcopy_managed() so both unref paths are skipped when SKBFL_MANAGED_FRAG_REFS is set, matching skb_release_data().
Linux kernel esp_ssg_unref() skb_zcopy_managed() guard = skip both page-unreference paths for managed-frag skbs