mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 23:05:25 -04:00
net: move sk_validate_xmit_skb() to net/core/dev.c
Move definition of sk_validate_xmit_skb() from net/core/sock.c to net/core/dev.c. This change is in preparation of the next patch, where sk_validate_xmit_skb() will need to cast sk to a tcp_timewait_sock *, and access member fields. Including linux/tcp.h from linux/sock.h creates a circular dependency, and dev.c is the only current call site of this function. Reviewed-by: Willem de Bruijn <willemb@google.com> Signed-off-by: Daniel Zahka <daniel.zahka@gmail.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Link: https://patch.msgid.link/20250917000954.859376-7-daniel.zahka@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
117f02a49b
commit
8c511c1df3
@@ -2960,28 +2960,6 @@ sk_requests_wifi_status(struct sock *sk)
|
||||
return sk && sk_fullsock(sk) && sock_flag(sk, SOCK_WIFI_STATUS);
|
||||
}
|
||||
|
||||
/* Checks if this SKB belongs to an HW offloaded socket
|
||||
* and whether any SW fallbacks are required based on dev.
|
||||
* Check decrypted mark in case skb_orphan() cleared socket.
|
||||
*/
|
||||
static inline struct sk_buff *sk_validate_xmit_skb(struct sk_buff *skb,
|
||||
struct net_device *dev)
|
||||
{
|
||||
#ifdef CONFIG_SOCK_VALIDATE_XMIT
|
||||
struct sock *sk = skb->sk;
|
||||
|
||||
if (sk && sk_fullsock(sk) && sk->sk_validate_xmit_skb) {
|
||||
skb = sk->sk_validate_xmit_skb(sk, dev, skb);
|
||||
} else if (unlikely(skb_is_decrypted(skb))) {
|
||||
pr_warn_ratelimited("unencrypted skb with no associated socket - dropping\n");
|
||||
kfree_skb(skb);
|
||||
skb = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
return skb;
|
||||
}
|
||||
|
||||
/* This helper checks if a socket is a LISTEN or NEW_SYN_RECV
|
||||
* SYNACK messages can be attached to either ones (depending on SYNCOOKIE)
|
||||
*/
|
||||
|
||||
@@ -3907,6 +3907,28 @@ sw_checksum:
|
||||
}
|
||||
EXPORT_SYMBOL(skb_csum_hwoffload_help);
|
||||
|
||||
/* Checks if this SKB belongs to an HW offloaded socket
|
||||
* and whether any SW fallbacks are required based on dev.
|
||||
* Check decrypted mark in case skb_orphan() cleared socket.
|
||||
*/
|
||||
static struct sk_buff *sk_validate_xmit_skb(struct sk_buff *skb,
|
||||
struct net_device *dev)
|
||||
{
|
||||
#ifdef CONFIG_SOCK_VALIDATE_XMIT
|
||||
struct sock *sk = skb->sk;
|
||||
|
||||
if (sk && sk_fullsock(sk) && sk->sk_validate_xmit_skb) {
|
||||
skb = sk->sk_validate_xmit_skb(sk, dev, skb);
|
||||
} else if (unlikely(skb_is_decrypted(skb))) {
|
||||
pr_warn_ratelimited("unencrypted skb with no associated socket - dropping\n");
|
||||
kfree_skb(skb);
|
||||
skb = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
return skb;
|
||||
}
|
||||
|
||||
static struct sk_buff *validate_xmit_unreadable_skb(struct sk_buff *skb,
|
||||
struct net_device *dev)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user