From nobody Sun Jan 30 10:40:29 2022 X-Original-To: dev-commits-src-all@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 4C1D7199D867; Sun, 30 Jan 2022 10:40:30 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Jmnlf1gwfz4jkn; Sun, 30 Jan 2022 10:40:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1643539230; 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=EbzkEXdsdYLxkzc6hB0UZHNyXuSlqwfdrT1HGXTqxUk=; b=etnoOPQbY87SFr+c82+TWY33xg5Yd0NqnnzixCGM4mzfu0Zm3Bh37u5RTqtmO36MXlp6dZ IfAv0Pa6/iEl9JSdi5PRDVEVulTHQo2EYd2tlH2JjNNsLgfslehkd7ueNKepZ/L0HdN7SW dBCuPifGqmYJyccmnYlXJcuYckSR8RDLTpkgRZNtfs9uGMs7KOyBHO4rwQ/Rhpi2jmnpuX zJpQx+oLQEYpWAUUNc3W8VuXwbdFeYf1bayA38N6VxzoyR04RJoOsuqyr2DWjUgW0TQq6M vLP0cWRwA+aFQRU60MyaB9fdbaOjCSWfrUx0CUnn3RqV8+ldEJ3pTRrNFaXv6A== 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 11B0B27346; Sun, 30 Jan 2022 10:40:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 20UAeTYk023665; Sun, 30 Jan 2022 10:40:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 20UAeTq8023664; Sun, 30 Jan 2022 10:40:29 GMT (envelope-from git) Date: Sun, 30 Jan 2022 10:40:29 GMT Message-Id: <202201301040.20UAeTq8023664@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Richard Scheffenegger Subject: git: 15d6a1f03ba7 - stable/13 - tcp: Rewind erraneous RTO only while performing RTO retransmissions List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rscheff X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 15d6a1f03ba79dd264e3542ba83b3f701dedfdb3 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1643539230; 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=EbzkEXdsdYLxkzc6hB0UZHNyXuSlqwfdrT1HGXTqxUk=; b=LU5+reZOtuimQoaJUfFFk/aVQYesOWJPfyR3h5MZki2hoGHoBcW+w4D/idFLdAsq06qDvH o3V2ymvVC5r9cLRW3F2lpITKJ6TIQlh+sRdjeC2jYHdTc24LSeprLNWpQOD7IDilfz/E/Z m5+ZzbecqB4KMSKIlpvuMAzwAnjLsKrzFWB6wubzkmk+jwuHz5p5Oa7n2ZyIfG0zBARp9U HXM06JVItBmD9eout/D4AaOmeWbqonYNs3kUFpxwtUlc7MYRG8JABQPyBVONU2kH0PXWXw Esb1l7r0GZXjkczpTyTnRUPaQO65WjFovQpPrhiuIFv85/KgQe8I/fkhQ0+ZvA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1643539230; a=rsa-sha256; cv=none; b=e3E21pdekrbiIlFFc2cEPtPlmBjtUAv3VMvCwt5NL9wvygNtzJDYtWIpaEjObE1D/3jkw/ H6/eeUzpnyJpd/6e/6Ov6quiMSpy23VU8jNCi1+PqyygCVTnCOjmNMWx9HaufUzeBfQmsP 4A5pQ2E9N4g2gNdCQ8Wn+12sntPszL/VACDn8AiwbrAsdUf460zgUQg58TtnsBQtMMHu1g 7KdCTtWqSg6gsMyrePYWKbSECUU4YTyASVwXyz1wdSPzjVyD4YaXpa0RvV/Vr32dkfOJe/ k1QbAuGnzvv2WqgJ8oONhOnhKWBGvjQ9clbCoAk8NYqqrTDdRG8ydzDAyQaYDw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by rscheff: URL: https://cgit.FreeBSD.org/src/commit/?id=15d6a1f03ba79dd264e3542ba83b3f701dedfdb3 commit 15d6a1f03ba79dd264e3542ba83b3f701dedfdb3 Author: Richard Scheffenegger AuthorDate: 2022-01-27 17:35:47 +0000 Commit: Richard Scheffenegger CommitDate: 2022-01-30 09:29:15 +0000 tcp: Rewind erraneous RTO only while performing RTO retransmissions Under rare circumstances, a spurious retranmission is incorrectly detected and rewound, messing up various tcpcb values, which can lead to a panic when SACK is in use. Reviewed By: tuexen, chengc_netapp.com, #transport MFC after: 3 days Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D33979 (cherry picked from commit 68e623c3f0afb4c9b338046fd1d4476befd82324) --- sys/netinet/tcp_input.c | 1 + sys/netinet/tcp_var.h | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index f7ca4ce05200..0848afd3c2b0 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1654,6 +1654,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, if (TSTMP_GT(to.to_tsecr, tcp_ts_getticks())) to.to_tsecr = 0; else if (tp->t_flags & TF_PREVVALID && + tp->t_rxtshift == 1 && tp->t_badrxtwin != 0 && SEQ_LT(to.to_tsecr, tp->t_badrxtwin)) cc_cong_signal(tp, th, CC_RTO_ERR); } diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index 86783c0eae38..3dfe3cc2a035 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -398,7 +398,11 @@ TAILQ_HEAD(tcp_funchead, tcp_function); #define TF_NEEDSYN 0x00000400 /* send SYN (implicit state) */ #define TF_NEEDFIN 0x00000800 /* send FIN (implicit state) */ #define TF_NOPUSH 0x00001000 /* don't push */ -#define TF_PREVVALID 0x00002000 /* saved values for bad rxmit valid */ +#define TF_PREVVALID 0x00002000 /* saved values for bad rxmit valid + * Note: accessing and restoring from + * these may only be done in the 1st + * RTO recovery round (t_rxtshift == 1) + */ #define TF_WAKESOR 0x00004000 /* wake up receive socket */ #define TF_GPUTINPROG 0x00008000 /* Goodput measurement in progress */ #define TF_MORETOCOME 0x00010000 /* More data to be appended to sock */