]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
udp_tunnel: Pass struct sock to udp_tunnel_{push,drop}_rx_port().
authorKuniyuki Iwashima <kuniyu@google.com>
Sat, 2 May 2026 03:12:57 +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 udp_tunnel_{push,drop}_rx_port() do not need struct socket.

Let's change udp_tunnel_{push,drop}_rx_port() to take struct
sock instead of struct socket.

Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20260502031401.3557229-5-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/geneve.c
drivers/net/vxlan/vxlan_core.c
include/net/udp_tunnel.h
net/ipv4/udp_tunnel_core.c

index 4b7081b97015ab0cc77173e749d5f9e0de4f2f0c..16df8d5c42c9f9f3c8352e96c9eb2c4f873ef412 100644 (file)
@@ -1654,10 +1654,10 @@ static void geneve_offload_rx_ports(struct net_device *dev, bool push)
 
        list_for_each_entry(gs, &gn->sock_list, list) {
                if (push) {
-                       udp_tunnel_push_rx_port(dev, gs->sock,
+                       udp_tunnel_push_rx_port(dev, gs->sock->sk,
                                                UDP_TUNNEL_TYPE_GENEVE);
                } else {
-                       udp_tunnel_drop_rx_port(dev, gs->sock,
+                       udp_tunnel_drop_rx_port(dev, gs->sock->sk,
                                                UDP_TUNNEL_TYPE_GENEVE);
                }
        }
index a19f951e05f1a7341a1753d3628425d9e5bac2be..184df57bc7056258e35d78e23864c1a730d06046 100644 (file)
@@ -3332,9 +3332,9 @@ static void vxlan_offload_rx_ports(struct net_device *dev, bool push)
                                type = UDP_TUNNEL_TYPE_VXLAN;
 
                        if (push)
-                               udp_tunnel_push_rx_port(dev, vs->sock, type);
+                               udp_tunnel_push_rx_port(dev, vs->sock->sk, type);
                        else
-                               udp_tunnel_drop_rx_port(dev, vs->sock, type);
+                               udp_tunnel_drop_rx_port(dev, vs->sock->sk, type);
                }
        }
 }
index 14a9c51556089a3d7f6f79702b55fcf130176308..29ead6a38ef646950c4471dbfaccb0e50339911d 100644 (file)
@@ -127,9 +127,9 @@ struct udp_tunnel_info {
 };
 
 /* Notify network devices of offloadable types */
-void udp_tunnel_push_rx_port(struct net_device *dev, struct socket *sock,
+void udp_tunnel_push_rx_port(struct net_device *dev, struct sock *sk,
                             unsigned short type);
-void udp_tunnel_drop_rx_port(struct net_device *dev, struct socket *sock,
+void udp_tunnel_drop_rx_port(struct net_device *dev, struct sock *sk,
                             unsigned short type);
 void udp_tunnel_notify_add_rx_port(struct socket *sock, unsigned short type);
 void udp_tunnel_notify_del_rx_port(struct socket *sock, unsigned short type);
index 3090b4745d47049080eaa9bde65c4ab118e4e198..857b51d62ce1140319e49e2aaf93e8d1a4a0574b 100644 (file)
@@ -97,10 +97,9 @@ void setup_udp_tunnel_sock(struct net *net, struct sock *sk,
 }
 EXPORT_SYMBOL_GPL(setup_udp_tunnel_sock);
 
-void udp_tunnel_push_rx_port(struct net_device *dev, struct socket *sock,
+void udp_tunnel_push_rx_port(struct net_device *dev, struct sock *sk,
                             unsigned short type)
 {
-       struct sock *sk = sock->sk;
        struct udp_tunnel_info ti;
 
        ti.type = type;
@@ -111,10 +110,9 @@ void udp_tunnel_push_rx_port(struct net_device *dev, struct socket *sock,
 }
 EXPORT_SYMBOL_GPL(udp_tunnel_push_rx_port);
 
-void udp_tunnel_drop_rx_port(struct net_device *dev, struct socket *sock,
+void udp_tunnel_drop_rx_port(struct net_device *dev, struct sock *sk,
                             unsigned short type)
 {
-       struct sock *sk = sock->sk;
        struct udp_tunnel_info ti;
 
        ti.type = type;