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>
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);
}
}
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);
}
}
}
};
/* 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);
}
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;
}
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;