]> git.ipfire.org Git - thirdparty/linux.git/commit
xfrm: esp: restore combined single-frag length gate
authorJingguo Tan <tanjingguo@huawei.com>
Mon, 18 May 2026 09:06:48 +0000 (17:06 +0800)
committerSteffen Klassert <steffen.klassert@secunet.com>
Fri, 22 May 2026 07:20:26 +0000 (09:20 +0200)
commitdfa0d7b0ff1eb6b2c416b8fdb9b4f2cefba57a40
tree5327eb763b59db3f352436b7b3bd6ef7f77dcfc9
parent2982e599fff6faa21c8df147d96fc7af6c1a2f24
xfrm: esp: restore combined single-frag length gate

The ESP out-of-place fast path appends the trailer in esp_output_head()
before esp_output_tail() allocates the destination page frag. The
head-side gate currently checks skb->data_len and tailen separately, but
the tail code allocates a single destination frag from the combined
post-trailer skb->data_len.

Reject the page-frag fast path when the combined aligned length exceeds a
page. Otherwise skb_page_frag_refill() may fall back to a single page while
the destination sg still spans the combined skb->data_len.

Restore this combined-length page gate for both IPv4 and IPv6.

Fixes: 5bd8baab087d ("esp: limit skb_page_frag_refill use to a single page")
Cc: stable@vger.kernel.org
Signed-off-by: Lin Ma <malin89@huawei.com>
Signed-off-by: Chenyuan Mi <michenyuan@huawei.com>
Signed-off-by: Jingguo Tan <tanjingguo@huawei.com>
Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/ipv4/esp4.c
net/ipv6/esp6.c