mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 16:44:58 +02:00
tcp: avoid dst->ops->check() call in tcp_v{4,6}_do_rcv()
If incoming skb dst matches the socket cached one,
there is no need to call again dst->ops->check().
Network layer already validated the skb dst for us,
usually from tcp_v{4,6}_early_demux().
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20260306154322.1086539-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
6927430735
commit
82f36517a1
|
|
@ -1855,7 +1855,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
|
|||
|
||||
sock_rps_save_rxhash(sk, skb);
|
||||
sk_mark_napi_id(sk, skb);
|
||||
if (dst) {
|
||||
if (dst && unlikely(dst != skb_dst(skb))) {
|
||||
if (sk->sk_rx_dst_ifindex != skb->skb_iif ||
|
||||
!INDIRECT_CALL_1(dst->ops->check, ipv4_dst_check,
|
||||
dst, 0)) {
|
||||
|
|
|
|||
|
|
@ -1596,7 +1596,7 @@ int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
|
|||
|
||||
sock_rps_save_rxhash(sk, skb);
|
||||
sk_mark_napi_id(sk, skb);
|
||||
if (dst) {
|
||||
if (dst && unlikely(dst != skb_dst(skb))) {
|
||||
if (sk->sk_rx_dst_ifindex != skb->skb_iif ||
|
||||
INDIRECT_CALL_1(dst->ops->check, ip6_dst_check,
|
||||
dst, sk->sk_rx_dst_cookie) == NULL) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user