Re: [PATCH 5.10 380/530] udp: never accept GSO_FRAGLIST packets
From: Paolo Abeni
Date: Mon May 17 2021 - 02:52:41 EST
On Sat, 2021-05-15 at 10:37 +0200, Pavel Machek wrote:
> > From: Paolo Abeni <pabeni@xxxxxxxxxx>
> > [ Upstream commit 78352f73dc5047f3f744764cc45912498c52f3c9 ]
> > 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.
> What is going on here? accept_udp_fraglist variable is read-only.
Thank you for checking this!
The 'accept_udp_fraglist' field is implicitly initilized to zero at UDP
socket allocation time (done by sk_alloc).
So this patch effectively force segmentation of SKB_GSO_FRAGLIST
packets via the udp_unexpected_gso() helper.
We introduce the above field instead of unconditionally
segmenting SKB_GSO_FRAGLIST, because the next patch will use it (to
avoid unneeded segmentation for performance's sake for UDP tunnel), as
Please let me know if the above clarifies the situation.