• Paolo Abeni's avatar
    udp: cope with UDP GRO packet misdirection · cf329aa4
    Paolo Abeni authored
    In some scenarios, the GRO engine can assemble an UDP GRO packet
    that ultimately lands on a non GRO-enabled socket.
    This patch tries to address the issue explicitly checking for the UDP
    socket features before enqueuing the packet, and eventually segmenting
    the unexpected GRO packet, as needed.
    We must also cope with re-insertion requests: after segmentation the
    UDP code calls the helper introduced by the previous patches, as needed.
    Segmentation is performed by a common helper, which takes care of
    updating socket and protocol stats is case of failure.
    rfc v3 -> v1
     - fix compile issues with rxrpc
     - when gso_segment returns NULL, treat is as an error
     - added 'ipv4' argument to udp_rcv_segment()
    rfc v2 -> rfc v3
     - moved udp_rcv_segment() into net/udp.h, account errors to socket
       and ns, always return NULL or segs list
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>