]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
udp_tunnel: Pass struct sock to setup_udp_tunnel_sock().
authorKuniyuki Iwashima <kuniyu@google.com>
Sat, 2 May 2026 03:12:55 +0000 (03:12 +0000)
committerJakub Kicinski <kuba@kernel.org>
Wed, 6 May 2026 00:47:04 +0000 (17:47 -0700)
None of the udp_tunnel users need struct socket in their
fast paths; it is only used for tunnel setup / teardown.

Even setup_udp_tunnel_sock() does not need struct socket.

Let's change setup_udp_tunnel_sock() to take struct sock
instead of struct socket.

Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20260502031401.3557229-3-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
16 files changed:
drivers/infiniband/sw/rxe/rxe_net.c
drivers/net/amt.c
drivers/net/bareudp.c
drivers/net/geneve.c
drivers/net/gtp.c
drivers/net/ovpn/udp.c
drivers/net/pfcp.c
drivers/net/vxlan/vxlan_core.c
drivers/net/wireguard/socket.c
include/net/udp_tunnel.h
net/ipv4/fou_core.c
net/ipv4/udp_tunnel_core.c
net/l2tp/l2tp_core.c
net/rxrpc/local_object.c
net/sctp/protocol.c
net/tipc/udp_media.c

index b454e4a179977ea0490d3d111f8e36850d5e06c0..082ff387d081a97f7e965de84d50aeb67c93eedb 100644 (file)
@@ -283,7 +283,7 @@ static struct socket *rxe_setup_udp_tunnel(struct net *net, __be16 port,
        tnl_cfg.encap_rcv = rxe_udp_encap_recv;
 
        /* Setup UDP tunnel */
-       setup_udp_tunnel_sock(net, sock, &tnl_cfg);
+       setup_udp_tunnel_sock(net, sock->sk, &tnl_cfg);
 
        return sock;
 }
index fc415072864b75cee293a7084b4c4ccf63ac606e..c03aa7c207e648893928c95fa3cef7a2dfb0864d 100644 (file)
@@ -2979,7 +2979,7 @@ static int amt_socket_create(struct amt_dev *amt)
        tunnel_cfg.encap_rcv = amt_rcv;
        tunnel_cfg.encap_err_lookup = amt_err_lookup;
        tunnel_cfg.encap_destroy = NULL;
-       setup_udp_tunnel_sock(amt->net, sock, &tunnel_cfg);
+       setup_udp_tunnel_sock(amt->net, sock->sk, &tunnel_cfg);
 
        rcu_assign_pointer(amt->sock, sock);
        return 0;
index f3025a5c526180207782bf366734a0d97e83fc4b..169ab90393cc45510098e5286a1c990afc445910 100644 (file)
@@ -268,7 +268,7 @@ static int bareudp_socket_create(struct bareudp_dev *bareudp, __be16 port)
        tunnel_cfg.encap_rcv = bareudp_udp_encap_recv;
        tunnel_cfg.encap_err_lookup = bareudp_err_lookup;
        tunnel_cfg.encap_destroy = NULL;
-       setup_udp_tunnel_sock(bareudp->net, sock, &tunnel_cfg);
+       setup_udp_tunnel_sock(bareudp->net, sock->sk, &tunnel_cfg);
 
        rcu_assign_pointer(bareudp->sock, sock);
        return 0;
index 8d55160305ee129f1a1c52b79e6e8f8721900af7..c3a7736cd6fc022c682f3570767077630bf0aee2 100644 (file)
@@ -1006,7 +1006,7 @@ static struct geneve_sock *geneve_socket_create(struct net *net, __be16 port,
        tunnel_cfg.encap_rcv = geneve_udp_encap_recv;
        tunnel_cfg.encap_err_lookup = geneve_udp_encap_err_lookup;
        tunnel_cfg.encap_destroy = NULL;
-       setup_udp_tunnel_sock(net, sock, &tunnel_cfg);
+       setup_udp_tunnel_sock(net, sock->sk, &tunnel_cfg);
        list_add(&gs->list, &gn->sock_list);
        return gs;
 }
index 064ce1029d3315232d070a3796c5dd129c1e8392..a60ef32b35b8255a17bed3fbc6ce19f26b3ba3a8 100644 (file)
@@ -1434,7 +1434,7 @@ static struct sock *gtp_create_sock(int type, struct gtp_dev *gtp,
        tuncfg.encap_rcv = gtp_encap_recv;
        tuncfg.encap_destroy = NULL;
 
-       setup_udp_tunnel_sock(net, sock, &tuncfg);
+       setup_udp_tunnel_sock(net, sock->sk, &tuncfg);
 
        return sock->sk;
 }
@@ -1689,7 +1689,7 @@ static struct sock *gtp_encap_enable_socket(int fd, int type,
        tuncfg.encap_rcv = gtp_encap_recv;
        tuncfg.encap_destroy = gtp_encap_destroy;
 
-       setup_udp_tunnel_sock(sock_net(sock->sk), sock, &tuncfg);
+       setup_udp_tunnel_sock(sock_net(sock->sk), sk, &tuncfg);
 
 out_rel_sock:
        release_sock(sock->sk);
index 059e896b4a2fdabe2ae5dc33adb059d841cc7b21..493a5a0744af84c57a42040535004c88791b5371 100644 (file)
@@ -399,7 +399,7 @@ int ovpn_udp_socket_attach(struct ovpn_socket *ovpn_sock, struct socket *sock,
        if (!old_data) {
                /* socket is currently unused - we can take it */
                rcu_read_unlock();
-               setup_udp_tunnel_sock(sock_net(ovpn_sock->sk), sock, &cfg);
+               setup_udp_tunnel_sock(sock_net(ovpn_sock->sk), sock->sk, &cfg);
                return 0;
        }
 
index ce58038cfccb96b55ae3c58b1190d6be2ec061e9..870137695e8aafb5b2b78d642dccec189470008f 100644 (file)
@@ -172,7 +172,7 @@ static struct socket *pfcp_create_sock(struct pfcp_dev *pfcp)
        tuncfg.encap_rcv = pfcp_encap_recv;
        tuncfg.encap_type = 1;
 
-       setup_udp_tunnel_sock(net, sock, &tuncfg);
+       setup_udp_tunnel_sock(net, sock->sk, &tuncfg);
 
        return sock;
 }
index 1d1aba1c7cfcd58c300ddfa96cc92e66f5904c54..394801c068b3392366fcc7424eb187fad52bd56e 100644 (file)
@@ -3620,7 +3620,7 @@ static struct vxlan_sock *vxlan_socket_create(struct net *net, bool ipv6,
                tunnel_cfg.gro_complete = vxlan_gro_complete;
        }
 
-       setup_udp_tunnel_sock(net, sock, &tunnel_cfg);
+       setup_udp_tunnel_sock(net, sock->sk, &tunnel_cfg);
 
        return vs;
 }
index 4a4c177af1707a61745c9f8c675be5d6ddb1fefa..0028ef17dc716dd9a92980ac2582c0ce8e4b9062 100644 (file)
@@ -389,7 +389,7 @@ retry:
                goto out;
        }
        set_sock_opts(new4);
-       setup_udp_tunnel_sock(net, new4, &cfg);
+       setup_udp_tunnel_sock(net, new4->sk, &cfg);
 
 #if IS_ENABLED(CONFIG_IPV6)
        if (ipv6_mod_enabled()) {
@@ -404,7 +404,7 @@ retry:
                        goto out;
                }
                set_sock_opts(new6);
-               setup_udp_tunnel_sock(net, new6, &cfg);
+               setup_udp_tunnel_sock(net, new6->sk, &cfg);
        }
 #endif
 
index dbbd56280f50538502b2ff259bcd64890395459a..49324e28ec275b96455be75a01b7c841bdc83475 100644 (file)
@@ -94,7 +94,7 @@ struct udp_tunnel_sock_cfg {
 };
 
 /* Setup the given (UDP) sock to receive UDP encapsulated packets */
-void setup_udp_tunnel_sock(struct net *net, struct socket *sock,
+void setup_udp_tunnel_sock(struct net *net, struct sock *sk,
                           struct udp_tunnel_sock_cfg *sock_cfg);
 
 /* -- List of parsable UDP tunnel types --
index 422f86291b427b4b4bc92ada65df7ec4f5bf61f3..6bed0e1dbe0e9a2f59f7193428e1f85197fb5541 100644 (file)
@@ -615,7 +615,7 @@ static int fou_create(struct net *net, struct fou_cfg *cfg,
                goto error;
        }
 
-       setup_udp_tunnel_sock(net, sock, &tunnel_cfg);
+       setup_udp_tunnel_sock(net, sk, &tunnel_cfg);
 
        sk->sk_allocation = GFP_ATOMIC;
 
index 1159a6a6fbb2fe90d1caea2b327738251f0a86f7..3090b4745d47049080eaa9bde65c4ab118e4e198 100644 (file)
@@ -68,11 +68,9 @@ static bool sk_saddr_any(struct sock *sk)
 #endif
 }
 
-void setup_udp_tunnel_sock(struct net *net, struct socket *sock,
+void setup_udp_tunnel_sock(struct net *net, struct sock *sk,
                           struct udp_tunnel_sock_cfg *cfg)
 {
-       struct sock *sk = sock->sk;
-
        /* Disable multicast loopback */
        inet_clear_bit(MC_LOOP, sk);
 
index 157fc23ce4e14eb0e5a3865af76a7438fa0c4039..cbc5a3e57b33c6e44f8c5f88ab9ab65c65f4c291 100644 (file)
@@ -1683,7 +1683,7 @@ int l2tp_tunnel_register(struct l2tp_tunnel *tunnel, struct net *net,
                        .encap_destroy = l2tp_udp_encap_destroy,
                };
 
-               setup_udp_tunnel_sock(net, sock, &udp_cfg);
+               setup_udp_tunnel_sock(net, sock->sk, &udp_cfg);
        }
 
        sk->sk_allocation = GFP_ATOMIC;
index 111f574fe667d23e44025ba7bf5f2bcd82d4363c..169f9dfdaa77f929d1cff9a2f14d966b4b9b0afb 100644 (file)
@@ -194,7 +194,7 @@ static int rxrpc_open_socket(struct rxrpc_local *local, struct net *net)
        tuncfg.encap_rcv = rxrpc_encap_rcv;
        tuncfg.encap_err_rcv = rxrpc_encap_err_rcv;
        tuncfg.sk_user_data = local;
-       setup_udp_tunnel_sock(net, local->socket, &tuncfg);
+       setup_udp_tunnel_sock(net, local->socket->sk, &tuncfg);
 
        /* set the socket up */
        usk = local->socket->sk;
index ffe594ad441477010d4d9c73f9d0d1537525411b..5c6fa8e8d34d3304f26a4927f58227f2fc987964 100644 (file)
@@ -864,7 +864,7 @@ int sctp_udp_sock_start(struct net *net)
        tuncfg.encap_type = 1;
        tuncfg.encap_rcv = sctp_udp_rcv;
        tuncfg.encap_err_lookup = sctp_udp_v4_err;
-       setup_udp_tunnel_sock(net, sock, &tuncfg);
+       setup_udp_tunnel_sock(net, sock->sk, &tuncfg);
        net->sctp.udp4_sock = sock->sk;
 
 #if IS_ENABLED(CONFIG_IPV6)
@@ -886,7 +886,7 @@ int sctp_udp_sock_start(struct net *net)
        tuncfg.encap_type = 1;
        tuncfg.encap_rcv = sctp_udp_rcv;
        tuncfg.encap_err_lookup = sctp_udp_v6_err;
-       setup_udp_tunnel_sock(net, sock, &tuncfg);
+       setup_udp_tunnel_sock(net, sock->sk, &tuncfg);
        net->sctp.udp6_sock = sock->sk;
 #endif
 
index d7c050ff580447e5f9e6109cbbbcc65d6b35b62f..0db172f1a41aa7e3229e2338f102e586ae75b793 100644 (file)
@@ -771,7 +771,7 @@ static int tipc_udp_enable(struct net *net, struct tipc_bearer *b,
        tuncfg.encap_type = 1;
        tuncfg.encap_rcv = tipc_udp_recv;
        tuncfg.encap_destroy = NULL;
-       setup_udp_tunnel_sock(net, ub->ubsock, &tuncfg);
+       setup_udp_tunnel_sock(net, ub->ubsock->sk, &tuncfg);
 
        err = dst_cache_init(&ub->rcast.dst_cache, GFP_ATOMIC);
        if (err)