mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 16:41:39 +00:00
gro: fix aggregation for skb using frag_list
In commit8a29111c7c
("net: gro: allow to build full sized skb") I added a regression for linear skb that traditionally force GRO to use the frag_list fallback. Erez Shitrit found that at most two segments were aggregated and the "if (skb_gro_len(p) != pinfo->gso_size)" test was failing. This is because pinfo at this spot still points to the last skb in the chain, instead of the first one, where we find the correct gso_size information. Signed-off-by: Eric Dumazet <edumazet@google.com> Fixes:8a29111c7c
("net: gro: allow to build full sized skb") Reported-by: Erez Shitrit <erezsh@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2c1a4311b6
commit
73d3fe6d1c
@ -3152,6 +3152,9 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb)
|
||||
NAPI_GRO_CB(skb)->free = NAPI_GRO_FREE_STOLEN_HEAD;
|
||||
goto done;
|
||||
}
|
||||
/* switch back to head shinfo */
|
||||
pinfo = skb_shinfo(p);
|
||||
|
||||
if (pinfo->frag_list)
|
||||
goto merge;
|
||||
if (skb_gro_len(p) != pinfo->gso_size)
|
||||
|
Loading…
Reference in New Issue
Block a user