回复: [PATCH net v2] net: fix crash when config small gso_max_size/gso_ipv4_max_size

From: wangliang (CI)
Date: Wed Oct 23 2024 - 03:18:50 EST


Thank you very much for your suggestions!

-----邮件原件-----
发件人: Eric Dumazet <edumazet@xxxxxxxxxx>
发送时间: 2024年10月23日 14:44
收件人: wangliang (CI) <wangliang74@xxxxxxxxxx>
抄送: davem@xxxxxxxxxxxxx; kuba@xxxxxxxxxx; pabeni@xxxxxxxxxx; idosch@xxxxxxxxxx; kuniyu@xxxxxxxxxx; stephen@xxxxxxxxxxxxxxxxxx; dsahern@xxxxxxxxxx; lucien.xin@xxxxxxxxx; yuehaibing <yuehaibing@xxxxxxxxxx>; zhangchangzhong <zhangchangzhong@xxxxxxxxxx>; netdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
主题: Re: [PATCH net v2] net: fix crash when config small gso_max_size/gso_ipv4_max_size

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>