]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ipv6: Remove UDP-Lite support for IPV6_ADDRFORM.
authorKuniyuki Iwashima <kuniyu@google.com>
Wed, 11 Mar 2026 05:19:50 +0000 (05:19 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sat, 14 Mar 2026 01:57:44 +0000 (18:57 -0700)
We cannot create IPv6 UDP-Lite sockets anymore.

Let's remove dead code in IPV6_ADDRFORM.

Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/20260311052020.1213705-4-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/ipv6_sockglue.c

index 02c4cab60c694f79d4743e5f8916f3c9661f9330..b4c977434c2e0a5bd8d04df59f9ba7155e1748d2 100644 (file)
@@ -45,7 +45,6 @@
 #include <net/inet_common.h>
 #include <net/tcp.h>
 #include <net/udp.h>
-#include <net/udplite.h>
 #include <net/xfrm.h>
 #include <net/compat.h>
 #include <net/seg6.h>
@@ -563,10 +562,8 @@ int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
                        if (sk->sk_type == SOCK_RAW)
                                break;
 
-                       if (sk->sk_protocol == IPPROTO_UDP ||
-                           sk->sk_protocol == IPPROTO_UDPLITE) {
-                               struct udp_sock *up = udp_sk(sk);
-                               if (up->pending == AF_INET6) {
+                       if (sk->sk_protocol == IPPROTO_UDP) {
+                               if (udp_sk(sk)->pending == AF_INET6) {
                                        retv = -EBUSY;
                                        break;
                                }
@@ -607,16 +604,11 @@ int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
                                WRITE_ONCE(sk->sk_family, PF_INET);
                                tcp_sync_mss(sk, icsk->icsk_pmtu_cookie);
                        } else {
-                               struct proto *prot = &udp_prot;
-
-                               if (sk->sk_protocol == IPPROTO_UDPLITE)
-                                       prot = &udplite_prot;
-
                                sock_prot_inuse_add(net, sk->sk_prot, -1);
-                               sock_prot_inuse_add(net, prot, 1);
+                               sock_prot_inuse_add(net, &udp_prot, 1);
 
                                /* Paired with READ_ONCE(sk->sk_prot) in inet6_dgram_ops */
-                               WRITE_ONCE(sk->sk_prot, prot);
+                               WRITE_ONCE(sk->sk_prot, &udp_prot);
                                WRITE_ONCE(sk->sk_socket->ops, &inet_dgram_ops);
                                WRITE_ONCE(sk->sk_family, PF_INET);
                        }
@@ -1098,7 +1090,6 @@ int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
        switch (optname) {
        case IPV6_ADDRFORM:
                if (sk->sk_protocol != IPPROTO_UDP &&
-                   sk->sk_protocol != IPPROTO_UDPLITE &&
                    sk->sk_protocol != IPPROTO_TCP)
                        return -ENOPROTOOPT;
                if (sk->sk_state != TCP_ESTABLISHED)