Re: [PATCH net v2] net: fix crash when config small gso_max_size/gso_ipv4_max_size
From: Eric Dumazet
Date: Wed Oct 23 2024 - 02:43:58 EST
On Wed, Oct 23, 2024 at 5:34 AM Wang Liang <wangliang74@xxxxxxxxxx> wrote:
>
> Config a small gso_max_size/gso_ipv4_max_size will lead to an underflow
> in sk_dst_gso_max_size(), which may trigger a BUG_ON crash,
> because sk->sk_gso_max_size would be much bigger than device limits.
> Call Trace:
> tcp_write_xmit
> tso_segs = tcp_init_tso_segs(skb, mss_now);
> tcp_set_skb_tso_segs
> tcp_skb_pcount_set
> // skb->len = 524288, mss_now = 8
> // u16 tso_segs = 524288/8 = 65535 -> 0
> tso_segs = DIV_ROUND_UP(skb->len, mss_now)
> BUG_ON(!tso_segs)
> Add check for the minimum value of gso_max_size and gso_ipv4_max_size.
>
> Fixes: 46e6b992c250 ("rtnetlink: allow GSO maximums to be set on device creation")
> Fixes: 9eefedd58ae1 ("net: add gso_ipv4_max_size and gro_ipv4_max_size per device")
> Signed-off-by: Wang Liang <wangliang74@xxxxxxxxxx>
> ---
Thanks for this fix !
Reviewed-by: Eric Dumazet <edumazet@xxxxxxxxxx>