Skip to content

Commit a2481ef

Browse files
Wang Liangvijay-suman
authored andcommitted
net: fix crash when config small gso_max_size/gso_ipv4_max_size
[ Upstream commit 9ab5cf1 ] 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: 46e6b99 ("rtnetlink: allow GSO maximums to be set on device creation") Fixes: 9eefedd ("net: add gso_ipv4_max_size and gro_ipv4_max_size per device") Signed-off-by: Wang Liang <[email protected]> Reviewed-by: Eric Dumazet <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]> [ Resolve minor conflicts to fix CVE-2024-50258 ] Signed-off-by: Bin Lan <[email protected]> Signed-off-by: Sasha Levin <[email protected]> [Harshit: Clean cherrypick from 6.1.y commit] Signed-off-by: Harshit Mogalapalli <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]> (cherry picked from commit 90c8482a5d9791259ba77bfdc1849fc5128b4be7) Signed-off-by: Vijayendra Suman <[email protected]>
1 parent 463b0bc commit a2481ef

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

net/core/rtnetlink.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1944,7 +1944,7 @@ static const struct nla_policy ifla_policy[IFLA_MAX+1] = {
19441944
[IFLA_NUM_TX_QUEUES] = { .type = NLA_U32 },
19451945
[IFLA_NUM_RX_QUEUES] = { .type = NLA_U32 },
19461946
[IFLA_GSO_MAX_SEGS] = { .type = NLA_U32 },
1947-
[IFLA_GSO_MAX_SIZE] = { .type = NLA_U32 },
1947+
[IFLA_GSO_MAX_SIZE] = NLA_POLICY_MIN(NLA_U32, MAX_TCP_HEADER + 1),
19481948
[IFLA_PHYS_PORT_ID] = { .type = NLA_BINARY, .len = MAX_PHYS_ITEM_ID_LEN },
19491949
[IFLA_CARRIER_CHANGES] = { .type = NLA_U32 }, /* ignored */
19501950
[IFLA_PHYS_SWITCH_ID] = { .type = NLA_BINARY, .len = MAX_PHYS_ITEM_ID_LEN },

0 commit comments

Comments
 (0)