udp: never accept GSO_FRAGLIST packets
[ Upstream commit78352f73dc] Currently the UDP protocol delivers GSO_FRAGLIST packets to the sockets without the expected segmentation. This change addresses the issue introducing and maintaining a couple of new fields to explicitly accept SKB_GSO_UDP_L4 or GSO_FRAGLIST packets. Additionally updates udp_unexpected_gso() accordingly. UDP sockets enabling UDP_GRO stil keep accept_udp_fraglist zeroed. v1 -> v2: - use 2 bits instead of a whole GSO bitmask (Willem) Fixes:9fd1ff5d2a("udp: Support UDP fraglist GRO/GSO.") Signed-off-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
c45cb22a55
commit
4877c4a523
@@ -2657,9 +2657,12 @@ int udp_lib_setsockopt(struct sock *sk, int level, int optname,
|
||||
|
||||
case UDP_GRO:
|
||||
lock_sock(sk);
|
||||
|
||||
/* when enabling GRO, accept the related GSO packet type */
|
||||
if (valbool)
|
||||
udp_tunnel_encap_enable(sk->sk_socket);
|
||||
up->gro_enabled = valbool;
|
||||
up->accept_udp_l4 = valbool;
|
||||
release_sock(sk);
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user