Skip to content

Commit dd89fa3

Browse files
committed
tcp: add four drop reasons to tcp_check_req()
JIRA: https://issues.redhat.com/browse/RHEL-88890 Upstream Status: linux.git Conflicts:\ - Removed parts linked to TSEcr as c9s is missing upstream commit 3ba0752 ("tcp: be less liberal in TSEcr received while in SYN_RECV state"). - Context difference as upstream commit 124c4c3 ("tcp: add TCP_RFC7323_PAWS_ACK drop reason") was not backported in c9s yet. commit a11a791 Author: Eric Dumazet <edumazet@google.com> Date: Sat Mar 1 20:14:20 2025 +0000 tcp: add four drop reasons to tcp_check_req() Use two existing drop reasons in tcp_check_req(): - TCP_RFC7323_PAWS - TCP_OVERWINDOW Add two new ones: - TCP_RFC7323_TSECR (corresponds to LINUX_MIB_TSECRREJECTED) - TCP_LISTEN_OVERFLOW (when a listener accept queue is full) Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Jason Xing <kerneljasonxing@gmail.com> Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com> Link: https://patch.msgid.link/20250301201424.2046477-3-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Antoine Tenart <atenart@redhat.com>
1 parent 6ab10dc commit dd89fa3

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

include/net/dropreason-core.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
FN(TCP_OFOMERGE) \
3535
FN(TCP_RFC7323_PAWS) \
3636
FN(TCP_RFC7323_PAWS_ACK) \
37+
FN(TCP_RFC7323_TSECR) \
38+
FN(TCP_LISTEN_OVERFLOW) \
3739
FN(TCP_OLD_SEQUENCE) \
3840
FN(TCP_INVALID_SEQUENCE) \
3941
FN(TCP_INVALID_ACK_SEQUENCE) \
@@ -239,6 +241,13 @@ enum skb_drop_reason {
239241
* Corresponds to LINUX_MIB_PAWS_OLD_ACK.
240242
*/
241243
SKB_DROP_REASON_TCP_RFC7323_PAWS_ACK,
244+
/**
245+
* @SKB_DROP_REASON_TCP_RFC7323_TSECR: PAWS check, invalid TSEcr.
246+
* Corresponds to LINUX_MIB_TSECRREJECTED.
247+
*/
248+
SKB_DROP_REASON_TCP_RFC7323_TSECR,
249+
/** @SKB_DROP_REASON_TCP_LISTEN_OVERFLOW: listener queue full. */
250+
SKB_DROP_REASON_TCP_LISTEN_OVERFLOW,
242251
/** @SKB_DROP_REASON_TCP_OLD_SEQUENCE: Old SEQ field (duplicate packet) */
243252
SKB_DROP_REASON_TCP_OLD_SEQUENCE,
244253
/** @SKB_DROP_REASON_TCP_INVALID_SEQUENCE: Not acceptable SEQ field */

net/ipv4/tcp_minisocks.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -721,8 +721,12 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
721721
LINUX_MIB_TCPACKSKIPPEDSYNRECV,
722722
&tcp_rsk(req)->last_oow_ack_time))
723723
req->rsk_ops->send_ack(sk, skb, req);
724-
if (paws_reject)
724+
if (paws_reject) {
725+
SKB_DR_SET(*drop_reason, TCP_RFC7323_PAWS);
725726
NET_INC_STATS(sock_net(sk), LINUX_MIB_PAWSESTABREJECTED);
727+
} else {
728+
SKB_DR_SET(*drop_reason, TCP_OVERWINDOW);
729+
}
726730
return NULL;
727731
}
728732

@@ -791,6 +795,7 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
791795
return inet_csk_complete_hashdance(sk, child, req, own_req);
792796

793797
listen_overflow:
798+
SKB_DR_SET(*drop_reason, TCP_LISTEN_OVERFLOW);
794799
if (sk != req->rsk_listener)
795800
__NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPMIGRATEREQFAILURE);
796801

0 commit comments

Comments
 (0)