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.
prev 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.