mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-06 11:54:14 -04:00
UPSTREAM: udp: properly flush normal packet at GRO time
If an UDP packet enters the GRO engine but is not eligible
for aggregation and is not targeting an UDP tunnel,
udp_gro_receive() will not set the flush bit, and packet
could delayed till the next napi flush.
Fix the issue ensuring non GROed packets traverse
skb_gro_flush_final().
Reported-and-tested-by: Matthias Treydte <mt@waldheinz.de>
Fixes: 18f25dc39990 ("udp: skip L4 aggregation for UDP tunnel packets")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit b43c8909be52f2baca8884f967b418a88424494a)
Bug: 187129171
Signed-off-by: Connor O'Brien <connoro@google.com>
Change-Id: Ic240b52b00c04621d0f523c1540e6d4b587ad1cd
This commit is contained in:
parent
833c1e231c
commit
2e30052a73
1 changed files with 4 additions and 2 deletions
|
|
@ -521,8 +521,10 @@ struct sk_buff *udp_gro_receive(struct list_head *head, struct sk_buff *skb,
|
|||
NAPI_GRO_CB(skb)->is_flist = sk ? !udp_sk(sk)->gro_enabled : 1;
|
||||
|
||||
if ((sk && udp_sk(sk)->gro_enabled) || NAPI_GRO_CB(skb)->is_flist)
|
||||
pp = call_gro_receive(udp_gro_receive_segment, head, skb);
|
||||
return pp;
|
||||
return call_gro_receive(udp_gro_receive_segment, head, skb);
|
||||
|
||||
/* no GRO, be sure flush the current packet */
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (NAPI_GRO_CB(skb)->encap_mark ||
|
||||
|
|
|
|||
Loading…
Reference in a new issue