Linux vulnerability

In the Linux kernel, the following vulnerability has been resolved: net: skbuff: preserve shared-frag marker during coalescing skb_try_coalesce() can attach paged frags from @from to @to. If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost. That breaks the invariant relied on by later in-place writers. In particular, ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data(). If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skb_has_shared_frag() as false and decrypt in place over page-cache backed frags. Propagate SKBFL_SHARED_FRAG when skb_try_coalesce() transfers paged frags. The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.

Published 23 May 2026Updated 8 Sep 202651 sources
CVSS 7.8 ✓ VERIFIED REFERENCE

What happened

In the Linux kernel, the following vulnerability has been resolved: net: skbuff: preserve shared-frag marker during coalescing skb_try_coalesce() can attach paged frags from @from to @to. If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost. That breaks the invariant relied on by later in-place writers. In particular, ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data(). If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skb_has_shared_frag() as false and decrypt in place over page-cache backed frags. Propagate SKBFL_SHARED_FRAG when skb_try_coalesce() transfers paged frags. The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.

Affected versions

Linux: cef401de7be8c4e155c6746bfccf721a4fa5fab9 through before 3599e6b3cc1ada96883d496a50a210d3afbb6987 (git); cef401de7be8c4e155c6746bfccf721a4fa5fab9 through before 2f2b16022a2e10ca7bccfb98db5ed2ec0f72641c (git); cef401de7be8c4e155c6746bfccf721a4fa5fab9 through before 9d3e5fd19fe1063bf607219e8562fbd567b8e8d5 (git); cef401de7be8c4e155c6746bfccf721a4fa5fab9 through before 78bf6b6bb19541d19fbda6242e7cfe2c682763c0 (git); cef401de7be8c4e155c6746bfccf721a4fa5fab9 through before 760e1addc27ba1a7beb4a0a7e8b3e9ec49e7a34e (git); cef401de7be8c4e155c6746bfccf721a4fa5fab9 through before 3bd9e113d50034db99d7ef69fd8e5242d15e414a (git); cef401de7be8c4e155c6746bfccf721a4fa5fab9 through before 3884358a9286b17f389a72b1426fc4547c23c111 (git); cef401de7be8c4e155c6746bfccf721a4fa5fab9 through before f84eca5817390257cef78013d0112481c503b4a3 (git); 3.9; V3.1.6 through before V3.1.7 (custom); V3.1.5 through before * (custom) Fixed: See vendor advisory.

Why it matters

Review the vendor advisory and exposure of the affected product to determine operational impact.

Detection & mitigation

  • Apply vendor-provided updates or mitigations.
  • Review affected product exposure and access logs.

Public PoC references