]> git.baikalelectronics.ru Git - kernel.git/commit
udp: ipv4: manipulate network header of NATed UDP GRO fraglist
authorDongseok Yi <dseok.yi@samsung.com>
Fri, 29 Jan 2021 23:13:27 +0000 (08:13 +0900)
committerJakub Kicinski <kuba@kernel.org>
Tue, 2 Feb 2021 04:02:16 +0000 (20:02 -0800)
commit8531f950c8985b15ee0e1a416b93e08ec0e7ba76
treebfa81cf96b093ce286b310d189b47e4031728bfd
parent74f49b64b936e6f9c284433e57729e5cc2ef4f73
udp: ipv4: manipulate network header of NATed UDP GRO fraglist

UDP/IP header of UDP GROed frag_skbs are not updated even after NAT
forwarding. Only the header of head_skb from ip_finish_output_gso ->
skb_gso_segment is updated but following frag_skbs are not updated.

A call path skb_mac_gso_segment -> inet_gso_segment ->
udp4_ufo_fragment -> __udp_gso_segment -> __udp_gso_segment_list
does not try to update UDP/IP header of the segment list but copy
only the MAC header.

Update port, addr and check of each skb of the segment list in
__udp_gso_segment_list. It covers both SNAT and DNAT.

Fixes: 2c55e1abaf0b (udp: Support UDP fraglist GRO/GSO.)
Signed-off-by: Dongseok Yi <dseok.yi@samsung.com>
Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
Link: https://lore.kernel.org/r/1611962007-80092-1-git-send-email-dseok.yi@samsung.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/udp.h
net/ipv4/udp_offload.c
net/ipv6/udp_offload.c