Description
In the Linux kernel, the following vulnerability has been resolved: rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE handler in rxrpc_verify_response() copy the skb to a linear one before calling into the security ops only when skb_cloned() is true. An skb that is not cloned but still carries externally-owned paged fragments (e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via __ip_append_data, or a chained skb_has_frag_list()) falls through to the in-place decryption path, which binds the frag pages directly into the AEAD/skcipher SGL via skb_to_sgvec(). Extend the gate to also unshare when skb_has_frag_list() or skb_has_shared_frag() is true. This catches the splice-loopback vector and other externally-shared frag sources while preserving the zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC page_pool RX, GRO). The OOM/trace handling already in place is reused.
Product status
d0d5c0cd1e711c98703f3544c1e6fc1372898de5 (git) before 3eae0f4f9f7206a4801efa5e0235c25bbd5a412c
d0d5c0cd1e711c98703f3544c1e6fc1372898de5 (git) before d45179f8795222ce858770dc619abe51f9d24411
d0d5c0cd1e711c98703f3544c1e6fc1372898de5 (git) before aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71
5.3
Any version before 5.3
6.18.29 (semver)
7.0.6 (semver)
7.1-rc3 (original_commit_for_fix)
References
github.com/V4bel/dirtyfrag
git.kernel.org/...c/3eae0f4f9f7206a4801efa5e0235c25bbd5a412c
git.kernel.org/...c/d45179f8795222ce858770dc619abe51f9d24411
git.kernel.org/...c/aa54b1d27fe0c2b78e664a34fd0fdf7cd1960d71