mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 06:41:39 -04:00
tcp: change tcp_filter() to return the reason by value
sk_filter_trim_cap() will soon return the reason by value, do the same for tcp_filter(). Note: tcp_filter() is no longer inlined. Following patch will inline it again. $ scripts/bloat-o-meter -t vmlinux.4 vmlinux.5 add/remove: 2/0 grow/shrink: 0/2 up/down: 186/-43 (143) Function old new delta tcp_filter - 154 +154 __pfx_tcp_filter - 32 +32 tcp_v4_rcv 3152 3143 -9 tcp_v6_rcv 3169 3135 -34 Total: Before=29722640, After=29722783, chg +0.00% Signed-off-by: Eric Dumazet <edumazet@google.com> Link: https://patch.msgid.link/20260409145625.2306224-5-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
c78bcbd519
commit
97449a5f1a
@@ -1683,12 +1683,14 @@ static inline bool tcp_checksum_complete(struct sk_buff *skb)
|
||||
bool tcp_add_backlog(struct sock *sk, struct sk_buff *skb,
|
||||
enum skb_drop_reason *reason);
|
||||
|
||||
static inline int tcp_filter(struct sock *sk, struct sk_buff *skb,
|
||||
enum skb_drop_reason *reason)
|
||||
static inline enum skb_drop_reason
|
||||
tcp_filter(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
const struct tcphdr *th = (const struct tcphdr *)skb->data;
|
||||
enum skb_drop_reason reason;
|
||||
|
||||
return sk_filter_trim_cap(sk, skb, __tcp_hdrlen(th), reason);
|
||||
sk_filter_trim_cap(sk, skb, __tcp_hdrlen(th), &reason);
|
||||
return reason;
|
||||
}
|
||||
|
||||
void tcp_set_state(struct sock *sk, int state);
|
||||
|
||||
@@ -2164,7 +2164,8 @@ int tcp_v4_rcv(struct sk_buff *skb)
|
||||
}
|
||||
refcounted = true;
|
||||
nsk = NULL;
|
||||
if (!tcp_filter(sk, skb, &drop_reason)) {
|
||||
drop_reason = tcp_filter(sk, skb);
|
||||
if (!drop_reason) {
|
||||
th = (const struct tcphdr *)skb->data;
|
||||
iph = ip_hdr(skb);
|
||||
tcp_v4_fill_cb(skb, iph, th);
|
||||
@@ -2225,7 +2226,8 @@ int tcp_v4_rcv(struct sk_buff *skb)
|
||||
|
||||
nf_reset_ct(skb);
|
||||
|
||||
if (tcp_filter(sk, skb, &drop_reason))
|
||||
drop_reason = tcp_filter(sk, skb);
|
||||
if (drop_reason)
|
||||
goto discard_and_relse;
|
||||
|
||||
th = (const struct tcphdr *)skb->data;
|
||||
|
||||
@@ -1794,7 +1794,8 @@ INDIRECT_CALLABLE_SCOPE int tcp_v6_rcv(struct sk_buff *skb)
|
||||
}
|
||||
refcounted = true;
|
||||
nsk = NULL;
|
||||
if (!tcp_filter(sk, skb, &drop_reason)) {
|
||||
drop_reason = tcp_filter(sk, skb);
|
||||
if (!drop_reason) {
|
||||
th = (const struct tcphdr *)skb->data;
|
||||
hdr = ipv6_hdr(skb);
|
||||
tcp_v6_fill_cb(skb, hdr, th);
|
||||
@@ -1855,7 +1856,8 @@ INDIRECT_CALLABLE_SCOPE int tcp_v6_rcv(struct sk_buff *skb)
|
||||
|
||||
nf_reset_ct(skb);
|
||||
|
||||
if (tcp_filter(sk, skb, &drop_reason))
|
||||
drop_reason = tcp_filter(sk, skb);
|
||||
if (drop_reason)
|
||||
goto discard_and_relse;
|
||||
|
||||
th = (const struct tcphdr *)skb->data;
|
||||
|
||||
Reference in New Issue
Block a user