All of lore.kernel.org
 help / color / mirror / Atom feed
From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
To: Kuniyuki Iwashima <kuniyu@google.com>,
	 Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
	 David Ahern <dsahern@kernel.org>,
	 "David S . Miller" <davem@davemloft.net>,
	 Eric Dumazet <edumazet@google.com>,
	 Jakub Kicinski <kuba@kernel.org>,
	 Paolo Abeni <pabeni@redhat.com>
Cc: Simon Horman <horms@kernel.org>,
	 Kuniyuki Iwashima <kuniyu@google.com>,
	 Kuniyuki Iwashima <kuni1840@gmail.com>,
	 netdev@vger.kernel.org
Subject: Re: [PATCH v1 net-next 00/15] udp: Retire UDP-Lite.
Date: Wed, 04 Mar 2026 18:20:20 -0500	[thread overview]
Message-ID: <willemdebruijn.kernel.1801cea2f62f8@gmail.com> (raw)
In-Reply-To: <20260304193034.1870586-1-kuniyu@google.com>

Kuniyuki Iwashima wrote:
> In 2023, syzbot found a null-ptr-deref bug triggered when UDP-Lite
> attempted to charge an skb after the total memory usage for UDP-Lite
> _and_ UDP exceeded a system-wide threshold, net.ipv4.udp_mem[1].
> 
> Since this threshold is shared with UDP, the bug would have been
> easy to trigger if any real-world applications were using UDP-Lite;
> however, only syzbot ever stumbled upon it.
> 
> The bug had persisted since 2016, suggesting that UDP-Lite had
> remained unused for 7 years at that point.
> 
> The bug was fixed in commit ad42a35bdfc6 ("udplite: Fix NULL pointer
> dereference in __sk_mem_raise_allocated()."), and we added another
> commit be28c14ac8bb ("udplite: Print deprecation notice.") to
> announce the deprecation plan.
> 
> Since then, no one has complained, so it is time to officially
> retire UDP-Lite.
> 
> This series first removes IPv6 and IPv4 UDP-Lite sockets, then
> gradually cleans up the remaining dead/unnecessary code within
> the UDP stack.
> 
> By removing a bunch of conditionals for UDP-Lite from the fast
> path, udp_rr with 20,000 flows sees a 10% increase in pps
> (13.3 Mpps -> 14.7 Mpps)  on an AMD EPYC 7B12 (Zen 2) 64-Core
> Processor platform.
> 
> [ With FDO, the baseline is much higher and the delta was ~3%,
>   20.1 Mpps -> 20.7 Mpps ]
> 
> Before:
> 
> $ nstat > /dev/null; sleep 1; nstat | grep Udp
> Udp6InDatagrams                 14013408           0.0
> Udp6OutDatagrams                14013128           0.0
> 
> After:
> 
> $ nstat > /dev/null; sleep 1; nstat | grep Udp
> Udp6InDatagrams                 15491971           0.0
> Udp6OutDatagrams                15491671           0.0
> 
> $ ./scripts/bloat-o-meter vmlinux.before vmlinux.after
> add/remove: 13/75 grow/shrink: 11/75 up/down: 13777/-18401 (-4624)
> Function                                     old     new   delta
> udp4_gro_receive                             872     866      -6
> udp6_gro_receive                             910     903      -7
> udp_rcv                                       32    1727   +1695
> udpv6_rcv                                     32    1450   +1418
> __udp4_lib_rcv                              2045       -   -2045
> __udp6_lib_rcv                              2084       -   -2084
> udp_unicast_rcv_skb                          160     149     -11
> udp6_unicast_rcv_skb                         196     181     -15
> __udp4_lib_mcast_deliver                     925     846     -79
> __udp6_lib_mcast_deliver                     922     810    -112
> __udp4_lib_lookup                            973     969      -4
> __udp6_lib_lookup                            940     929     -11
> __udp4_lib_lookup_skb                        106     100      -6
> __udp6_lib_lookup_skb                         71      66      -5
> udp4_lib_lookup_skb                          132     127      -5
> udp6_lib_lookup_skb                           87      81      -6
> udp_queue_rcv_skb                            326     356     +30
> udpv6_queue_rcv_skb                          331     361     +30
> udp_queue_rcv_one_skb                       1233     914    -319
> udpv6_queue_rcv_one_skb                     1250     930    -320
> __udp_enqueue_schedule_skb                  1067     995     -72
> udp_rcv_segment                              520     480     -40
> udp_post_segment_fix_csum                    120       -    -120
> udp_lib_checksum_complete                    200      84    -116
> udp_err                                       27    1103   +1076
> udpv6_err                                     36    1417   +1381
> __udp4_lib_err                              1112       -   -1112
> __udp6_lib_err                              1448       -   -1448
> udp_recvmsg                                 1149     994    -155
> udpv6_recvmsg                               1349    1294     -55
> udp_sendmsg                                 2730    2648     -82
> udp_send_skb                                 909     681    -228
> udpv6_sendmsg                               3022    2861    -161
> udp_v6_send_skb                             1214     952    -262
> ...
> Total: Before=18446744073748075501, After=18446744073748070877, chg -0.00%
> 
> 
> Kuniyuki Iwashima (15):
>   udp: Make udp[46]_seq_show() static.
>   ipv6: Retire UDP-Lite.
>   ipv6: Remove UDP-Lite support for IPV6_ADDRFORM.
>   ipv4: Retire UDP-Lite.
>   udp: Remove UDP-Lite SNMP stats.
>   smack: Remove IPPROTO_UDPLITE support in security_sock_rcv_skb().
>   udp: Remove partial csum code in RX.
>   udp: Remove partial csum code in TX.
>   udp: Remove UDPLITE_SEND_CSCOV and UDPLITE_RECV_CSCOV.
>   udp: Remove struct proto.h.udp_table.
>   udp: Remove udp_table in struct udp_seq_afinfo.
>   udp: Remove dead check in __udp[46]_lib_lookup() for BPF.
>   udp: Don't pass udptable to IPv6 socket lookup functions.
>   udp: Don't pass udptable to IPv4 socket lookup functions.
>   udp: Don't pass proto to __udp4_lib_rcv() and __udp6_lib_rcv().
> 
>  include/linux/udp.h        |  10 +-
>  include/net/ipv6.h         |   2 -
>  include/net/ipv6_stubs.h   |   7 +-
>  include/net/netns/mib.h    |   5 -
>  include/net/sock.h         |   5 +-
>  include/net/transp_v6.h    |   3 -
>  include/net/udp.h          |  86 +++-----
>  include/net/udplite.h      |  88 --------
>  include/uapi/linux/udp.h   |   1 +
>  net/core/filter.c          |   5 +-
>  net/ipv4/Makefile          |   2 +-
>  net/ipv4/af_inet.c         |  12 --
>  net/ipv4/proc.c            |  16 --
>  net/ipv4/udp.c             | 426 ++++++++++++-------------------------
>  net/ipv4/udp_bpf.c         |   2 -
>  net/ipv4/udp_diag.c        | 128 +++--------
>  net/ipv4/udp_impl.h        |  27 ---
>  net/ipv4/udp_offload.c     |   3 +-
>  net/ipv4/udplite.c         | 135 ------------
>  net/ipv6/Makefile          |   2 +-
>  net/ipv6/af_inet6.c        |  32 +--
>  net/ipv6/ip6_checksum.c    |   2 +-
>  net/ipv6/ipv6_sockglue.c   |  17 +-
>  net/ipv6/proc.c            |  16 --
>  net/ipv6/udp.c             | 305 ++++++++++----------------
>  net/ipv6/udp_impl.h        |  31 ---
>  net/ipv6/udp_offload.c     |   3 +-
>  net/ipv6/udplite.c         | 139 ------------
>  net/rxrpc/output.c         |   2 -
>  security/smack/smack_lsm.c |   4 +-
>  30 files changed, 339 insertions(+), 1177 deletions(-)
>  delete mode 100644 include/net/udplite.h
>  delete mode 100644 net/ipv4/udp_impl.h
>  delete mode 100644 net/ipv4/udplite.c
>  delete mode 100644 net/ipv6/udp_impl.h
>  delete mode 100644 net/ipv6/udplite.c

For the series:

Reviewed-by: Willem de Bruijn <willemb@google.com>

Thanks for this thorough cleanup Kuniyuki. No major concerns from me.
Left a small comment about documentating deprecated constants, iff
respinning.

      parent reply	other threads:[~2026-03-04 23:20 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-04 19:28 [PATCH v1 net-next 00/15] udp: Retire UDP-Lite Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 01/15] udp: Make udp[46]_seq_show() static Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 02/15] ipv6: Retire UDP-Lite Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 03/15] ipv6: Remove UDP-Lite support for IPV6_ADDRFORM Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 04/15] ipv4: Retire UDP-Lite Kuniyuki Iwashima
2026-03-05 15:03   ` kernel test robot
2026-03-05 19:42     ` Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 05/15] udp: Remove UDP-Lite SNMP stats Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 06/15] smack: Remove IPPROTO_UDPLITE support in security_sock_rcv_skb() Kuniyuki Iwashima
2026-03-05 17:08   ` Casey Schaufler
2026-03-04 19:28 ` [PATCH v1 net-next 07/15] udp: Remove partial csum code in RX Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 08/15] udp: Remove partial csum code in TX Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 09/15] udp: Remove UDPLITE_SEND_CSCOV and UDPLITE_RECV_CSCOV Kuniyuki Iwashima
2026-03-04 22:47   ` Willem de Bruijn
2026-03-05  0:09     ` Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 10/15] udp: Remove struct proto.h.udp_table Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 11/15] udp: Remove udp_table in struct udp_seq_afinfo Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 12/15] udp: Remove dead check in __udp[46]_lib_lookup() for BPF Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 13/15] udp: Don't pass udptable to IPv6 socket lookup functions Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 14/15] udp: Don't pass udptable to IPv4 " Kuniyuki Iwashima
2026-03-04 19:28 ` [PATCH v1 net-next 15/15] udp: Don't pass proto to __udp4_lib_rcv() and __udp6_lib_rcv() Kuniyuki Iwashima
2026-03-04 19:53 ` [PATCH v1 net-next 00/15] udp: Retire UDP-Lite Florian Westphal
2026-03-04 20:10   ` Kuniyuki Iwashima
2026-03-04 23:20 ` Willem de Bruijn [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=willemdebruijn.kernel.1801cea2f62f8@gmail.com \
    --to=willemdebruijn.kernel@gmail.com \
    --cc=davem@davemloft.net \
    --cc=dsahern@kernel.org \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=kuni1840@gmail.com \
    --cc=kuniyu@google.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.