From nobody Wed Nov 12 18:46:27 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4d6C6X1zpnz6GR7P; Wed, 12 Nov 2025 18:46:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4d6C6X1PTmz3g7T; Wed, 12 Nov 2025 18:46:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1762973188; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n40yyy4aoiQu8yEe5ug2dyXLNf9quHZBFQ+KYcy1Wgs=; b=qFYudUlmBZxfY3B1hOKOt3f5Wm857IP+dPDNVLOxNvaNiftfW4MosTsPnvLNMVzE4ou7Uf QKy615ed86LuHcZzC2owIXh0ph4QHYnKxAX4SXYxMfS4vEVFE2sWLlt92tLE2JB6QGszHO X7hCCWcNeMoBJ4k/v2zu732SdN9C95KPEuqox5HueCKZ8N0qDMoUtODWNSjj0eguxkuhLe JJtQ6EVOLcbzN/kqe//KiYN54tXoma5JaUynZY1ph4QWRRVKVNTN8qaeFuhFRmNzIGqAqk LX3CYg37BgZ8df0hQdZlMIUmQt+DzsqcbRFMkXbrCPA/hs/+K4QMLzdg1hs7PQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1762973188; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n40yyy4aoiQu8yEe5ug2dyXLNf9quHZBFQ+KYcy1Wgs=; b=A5NjJo1BAvT9Hr39Z1SfAYpObY19lI72iU3gtSlkxTCvakBRTY3cUQm4Mpp30EcxDDLFxk gWiapc3lVCFsBA0f/VovV0EjwJdCZSuZCsdBYUQuwpqXdv1iRP5barb5ms+zatV8DjWgHj pquo9Er5u+6AhCM/JdkJweAor/osPP4TXOtSLpxEiQ4oGBo5hkOTsRO6FNesOiKksdu+cl NxF97hVZiVv5UMjG+uWUTt8P3q9oMStuQZrBwy+sYxpvgGXIXN81+r4I4xhTugnOP8nu6S XGMRJF/D12K49k5ATlkRX2PJci0feYI5ixvSrQPZMB/LmhwarmlliZBojFpyQw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1762973188; a=rsa-sha256; cv=none; b=QSd8cyC1LQoa69cZUr9R0TBLsjmr4dBwwfIAYi2N9HWigw9hdQW6LxggXT1V6z5ABnN2X4 8Iw5hT7xshimD2/OLEt92K9pvwTc5RNxCEgsENVmNnooLXwN3w1JmWG5NibZ+oCQaM8b+h 7VktfhIKeHyM966qv8Et0gtvGW9FDYHLtLx9brH8oCo8a0avxwlX53wCjikY3qpaQwSgHh ZU92oespFNobtjylRdnkYsbqBHjRSMOZATrTa057JVOtCcRFXP4U2ecLQEFUkxqTnS1uPm dGQIWCX+M+U5qEmZJHzzottQorh/vJQ8ImQRT78qSRvGLQhmZyqQBNcprAH8sA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4d6C6X0wV9zmgG; Wed, 12 Nov 2025 18:46:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5ACIkSSK097748; Wed, 12 Nov 2025 18:46:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5ACIkRbG097745; Wed, 12 Nov 2025 18:46:27 GMT (envelope-from git) Date: Wed, 12 Nov 2025 18:46:27 GMT Message-Id: <202511121846.5ACIkRbG097745@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: bd4cf77ba2bb - releng/15.0 - tcp: drop SYN ACK segment for listening sockets List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/15.0 X-Git-Reftype: branch X-Git-Commit: bd4cf77ba2bba0b0f3849cf8c299fdb5f81bf6a9 Auto-Submitted: auto-generated The branch releng/15.0 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=bd4cf77ba2bba0b0f3849cf8c299fdb5f81bf6a9 commit bd4cf77ba2bba0b0f3849cf8c299fdb5f81bf6a9 Author: Michael Tuexen AuthorDate: 2025-11-03 10:50:49 +0000 Commit: Colin Percival CommitDate: 2025-11-12 18:46:02 +0000 tcp: drop SYN ACK segment for listening sockets When a SYN ACK is received for a listening socket, just drop it instead of killing the SYN-cache entry and send a RST. This closes the possibility to kill a TCP connection during its handling in the SYN-cache. Approved by: re (cperciva) Reviewed by: Nick Banks, Peter Lei Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D53540 (cherry picked from commit 239464e99321ede07664782426ec4e54cd8a618d) (cherry picked from commit e082156ae14b6717f08dccfff62d1fcbb3b26487) --- sys/netinet/tcp_input.c | 5 ++--- sys/netinet/tcp_syncache.c | 17 ----------------- sys/netinet/tcp_syncache.h | 1 - 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 2146b0cac48f..9c58c2815d13 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1192,11 +1192,10 @@ tfo_socket_result: if (thflags & TH_ACK) { if ((s = tcp_log_addrs(&inc, th, NULL, NULL))) log(LOG_DEBUG, "%s; %s: Listen socket: " - "SYN|ACK invalid, segment rejected\n", + "SYN|ACK invalid, segment ignored\n", s, __func__); - syncache_badack(&inc, port); /* XXX: Not needed! */ TCPSTAT_INC(tcps_badsyn); - goto dropwithreset; + goto dropunlock; } /* * If the drop_synfin option is enabled, drop all diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c index 57aeb86f6351..a6a39b760a47 100644 --- a/sys/netinet/tcp_syncache.c +++ b/sys/netinet/tcp_syncache.c @@ -712,23 +712,6 @@ done: SCH_UNLOCK(sch); } -void -syncache_badack(struct in_conninfo *inc, uint16_t port) -{ - struct syncache *sc; - struct syncache_head *sch; - - if (syncache_cookiesonly()) - return; - sc = syncache_lookup(inc, &sch); /* returns locked sch */ - SCH_LOCK_ASSERT(sch); - if ((sc != NULL) && (sc->sc_port == port)) { - syncache_drop(sc, sch); - TCPSTAT_INC(tcps_sc_badack); - } - SCH_UNLOCK(sch); -} - void syncache_unreach(struct in_conninfo *inc, tcp_seq th_seq, uint16_t port) { diff --git a/sys/netinet/tcp_syncache.h b/sys/netinet/tcp_syncache.h index 37f6ff3d6ca9..c916b4de6ae0 100644 --- a/sys/netinet/tcp_syncache.h +++ b/sys/netinet/tcp_syncache.h @@ -45,7 +45,6 @@ struct socket * syncache_add(struct in_conninfo *, struct tcpopt *, void *, void *, uint8_t, uint16_t); void syncache_chkrst(struct in_conninfo *, struct tcphdr *, struct mbuf *, uint16_t); -void syncache_badack(struct in_conninfo *, uint16_t); int syncache_pcblist(struct sysctl_req *); struct syncache {