diff options
author | Alexander Lobakin <alobakin@pm.me> | 2020-11-11 23:45:38 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2020-11-12 20:55:51 +0300 |
commit | 55e729889bb07d68ab071660ce3f5e7a7872ebe8 (patch) | |
tree | 30734917e8330ab74b80440fd3dcc6dc29e29f5c /lib/test_overflow.c | |
parent | 4b1a86281cc1d0de46df3ad2cb8c1f86ac07681c (diff) | |
download | linux-55e729889bb07d68ab071660ce3f5e7a7872ebe8.tar.xz |
net: udp: fix IP header access and skb lookup on Fast/frag0 UDP GRO
udp{4,6}_lib_lookup_skb() use ip{,v6}_hdr() to get IP header of the
packet. While it's probably OK for non-frag0 paths, this helpers
will also point to junk on Fast/frag0 GRO when all headers are
located in frags. As a result, sk/skb lookup may fail or give wrong
results. To support both GRO modes, skb_gro_network_header() might
be used. To not modify original functions, add private versions of
udp{4,6}_lib_lookup_skb() only to perform correct sk lookups on GRO.
Present since the introduction of "application-level" UDP GRO
in 4.7-rc1.
Misc: replace totally unneeded ternaries with plain ifs.
Fixes: a6024562ffd7 ("udp: Add GRO functions to UDP socket")
Suggested-by: Willem de Bruijn <willemb@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Signed-off-by: Alexander Lobakin <alobakin@pm.me>
Acked-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'lib/test_overflow.c')
0 files changed, 0 insertions, 0 deletions