Commit 46a02aa3 authored by Yan Zhai's avatar Yan Zhai Committed by David S. Miller

tcp: use sk_skb_reason_drop to free rx packets

Replace kfree_skb_reason with sk_skb_reason_drop and pass the receiving
socket to the tracepoint.
Reported-by: default avatarkernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/r/202406011539.jhwBd7DX-lkp@intel.com/Signed-off-by: default avatarYan Zhai <yan@cloudflare.com>
Acked-by: default avatarJesper Dangaard Brouer <hawk@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ce9a2424
...@@ -496,6 +496,6 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb) ...@@ -496,6 +496,6 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb)
out_free: out_free:
reqsk_free(req); reqsk_free(req);
out_drop: out_drop:
kfree_skb_reason(skb, reason); sk_skb_reason_drop(sk, skb, reason);
return NULL; return NULL;
} }
...@@ -4860,7 +4860,7 @@ static void tcp_drop_reason(struct sock *sk, struct sk_buff *skb, ...@@ -4860,7 +4860,7 @@ static void tcp_drop_reason(struct sock *sk, struct sk_buff *skb,
enum skb_drop_reason reason) enum skb_drop_reason reason)
{ {
sk_drops_add(sk, skb); sk_drops_add(sk, skb);
kfree_skb_reason(skb, reason); sk_skb_reason_drop(sk, skb, reason);
} }
/* This one checks to see if we can put data from the /* This one checks to see if we can put data from the
......
...@@ -1932,7 +1932,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) ...@@ -1932,7 +1932,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
reset: reset:
tcp_v4_send_reset(rsk, skb, sk_rst_convert_drop_reason(reason)); tcp_v4_send_reset(rsk, skb, sk_rst_convert_drop_reason(reason));
discard: discard:
kfree_skb_reason(skb, reason); sk_skb_reason_drop(sk, skb, reason);
/* Be careful here. If this function gets more complicated and /* Be careful here. If this function gets more complicated and
* gcc suffers from register pressure on the x86, sk (in %ebx) * gcc suffers from register pressure on the x86, sk (in %ebx)
* might be destroyed here. This current version compiles correctly, * might be destroyed here. This current version compiles correctly,
...@@ -2168,8 +2168,8 @@ int tcp_v4_rcv(struct sk_buff *skb) ...@@ -2168,8 +2168,8 @@ int tcp_v4_rcv(struct sk_buff *skb)
int dif = inet_iif(skb); int dif = inet_iif(skb);
const struct iphdr *iph; const struct iphdr *iph;
const struct tcphdr *th; const struct tcphdr *th;
struct sock *sk = NULL;
bool refcounted; bool refcounted;
struct sock *sk;
int ret; int ret;
u32 isn; u32 isn;
...@@ -2368,7 +2368,7 @@ int tcp_v4_rcv(struct sk_buff *skb) ...@@ -2368,7 +2368,7 @@ int tcp_v4_rcv(struct sk_buff *skb)
discard_it: discard_it:
SKB_DR_OR(drop_reason, NOT_SPECIFIED); SKB_DR_OR(drop_reason, NOT_SPECIFIED);
/* Discard frame. */ /* Discard frame. */
kfree_skb_reason(skb, drop_reason); sk_skb_reason_drop(sk, skb, drop_reason);
return 0; return 0;
discard_and_relse: discard_and_relse:
......
...@@ -275,6 +275,6 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb) ...@@ -275,6 +275,6 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
out_free: out_free:
reqsk_free(req); reqsk_free(req);
out_drop: out_drop:
kfree_skb_reason(skb, reason); sk_skb_reason_drop(sk, skb, reason);
return NULL; return NULL;
} }
...@@ -1674,7 +1674,7 @@ int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) ...@@ -1674,7 +1674,7 @@ int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
discard: discard:
if (opt_skb) if (opt_skb)
__kfree_skb(opt_skb); __kfree_skb(opt_skb);
kfree_skb_reason(skb, reason); sk_skb_reason_drop(sk, skb, reason);
return 0; return 0;
csum_err: csum_err:
reason = SKB_DROP_REASON_TCP_CSUM; reason = SKB_DROP_REASON_TCP_CSUM;
...@@ -1747,8 +1747,8 @@ INDIRECT_CALLABLE_SCOPE int tcp_v6_rcv(struct sk_buff *skb) ...@@ -1747,8 +1747,8 @@ INDIRECT_CALLABLE_SCOPE int tcp_v6_rcv(struct sk_buff *skb)
int dif = inet6_iif(skb); int dif = inet6_iif(skb);
const struct tcphdr *th; const struct tcphdr *th;
const struct ipv6hdr *hdr; const struct ipv6hdr *hdr;
struct sock *sk = NULL;
bool refcounted; bool refcounted;
struct sock *sk;
int ret; int ret;
u32 isn; u32 isn;
struct net *net = dev_net(skb->dev); struct net *net = dev_net(skb->dev);
...@@ -1940,7 +1940,7 @@ INDIRECT_CALLABLE_SCOPE int tcp_v6_rcv(struct sk_buff *skb) ...@@ -1940,7 +1940,7 @@ INDIRECT_CALLABLE_SCOPE int tcp_v6_rcv(struct sk_buff *skb)
discard_it: discard_it:
SKB_DR_OR(drop_reason, NOT_SPECIFIED); SKB_DR_OR(drop_reason, NOT_SPECIFIED);
kfree_skb_reason(skb, drop_reason); sk_skb_reason_drop(sk, skb, drop_reason);
return 0; return 0;
discard_and_relse: discard_and_relse:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment