From nobody Tue Jun 7 07:40:38 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 1322B1BDF72F; Tue, 7 Jun 2022 07:40:39 +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 4LHMj26lphz4Qqv; Tue, 7 Jun 2022 07:40:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1654587639; 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=aFbC81lYg/sGDklLid+2jXK5THERJtAoWQdLns/DzJc=; b=MTFUh9wDi8ISPxCDeBtbvRIDQIZs8eo2f0pUT62RfR2opSCqOAI3QE8w5v8U4sWjUD6eaa 9RF7/GOOQtZ1xVJcsEMb/vxPKcNl/rAhp8cg9PlOEVUY3MRwOUj3Vj0PkW+69rPBQDYZT8 zCGD7pwhPDmyxU7iQb7y1q9qRHal7y38ylaLJ2lkOG3W+I2e/PvekQfwoOOTxBdmtjDmfl lGNbzLdv9PIzQJJ8Z8AXLhZ1/eC/iA5QObHQnEqAHMzkllQDmZdLXAQxwZwll2LwDf3Jyn uaJbVf9cAP4ephWKrgJyjrHDx3Vvw6+UJgAW1zxR+MHDXWWp2Vd7F6wQeyfNIA== 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 B408F16B51; Tue, 7 Jun 2022 07:40:38 +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 2577ecd8074467; Tue, 7 Jun 2022 07:40:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2577ecdd074466; Tue, 7 Jun 2022 07:40:38 GMT (envelope-from git) Date: Tue, 7 Jun 2022 07:40:38 GMT Message-Id: <202206070740.2577ecdd074466@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Richard Scheffenegger Subject: git: 91d6afe6e2a9 - main - tcp: Sanity check of SACK holes on 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/main X-Git-Reftype: branch X-Git-Commit: 91d6afe6e2a912fd5059fc11dbeffc85474897af Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1654587639; 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=aFbC81lYg/sGDklLid+2jXK5THERJtAoWQdLns/DzJc=; b=kRumFH0IDuZhJ09qgOtXYO2IzVzJYw/7+5WHkT3ezvAL/zIj2Zv01B98LgkgbwNSnX92L5 8yzYaYoW8TwtgKDcPc5sDz/37TWm80ocy3BbZuMyDtT6ADRn2RiDweoWGjcwLkX6L9cZhe SPAJKo/0m2Bxyzpa9M0tQTkDvzieKrxmyaLu1pL4vPjymzO4msKkt9rMdojONIgxVeoW01 nWI2p7PB7WB43BZX1tG6ztZKwfB89VotAFekR7scr3h+rBVTa+m5RQCu+g0xwrcsvobrKw Zc7ow9vX9wvZ6JinSVpJsK5Ca4oQBXZsXCQFjUeu2xorh2/hw1TaitByIihvfw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1654587639; a=rsa-sha256; cv=none; b=C7ENiRydFBXt57c6C2zap1/H7/Mfy6M0oonaBDrmx7beH6oH58Wc9gWhefRxG9Rw4m/Zj9 AUMRs4V01+jER7HKyN83oBV+RtYK2n10uhADWv92AnCY2q5KesdODT0ImQXZLvRrMThaA4 8u0OGmy6BaI22UUF8Zwx/exaccBikIE8PG0PzDL6E5OqGknAO87Y+UnDwFGH/k1WY2SbDM J+slTHTKkcmjJfplQ+jSQjLFllVQhWaxjxxMhFhibr15/7ygsUpEbjoDILujH/A0f50lw6 zasaIOtzjyG79cM8hmkjSE1UCHmWJ1Pog3vxshjlhX0xDTs/2S8pysla23OwIA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rscheff: URL: https://cgit.FreeBSD.org/src/commit/?id=91d6afe6e2a912fd5059fc11dbeffc85474897af commit 91d6afe6e2a912fd5059fc11dbeffc85474897af Author: Richard Scheffenegger AuthorDate: 2022-06-07 07:07:09 +0000 Commit: Richard Scheffenegger CommitDate: 2022-06-07 07:38:16 +0000 tcp: Sanity check of SACK holes on retransmissions Adding a few KASSERT() to validate sanity of sack holes, and bail out if sack hole is inconsistent to avoid panicing non-invariant builds. Reviewed By: hselasky, glebius PR: 263445 MFC after: 1 week Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D35387 --- sys/netinet/tcp_sack.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c index c38b9dd1d006..c1bbf65a0770 100644 --- a/sys/netinet/tcp_sack.c +++ b/sys/netinet/tcp_sack.c @@ -965,6 +965,18 @@ tcp_sack_output(struct tcpcb *tp, int *sack_bytes_rexmt) } } out: + KASSERT(SEQ_LT(hole->start, hole->end), ("%s: hole.start >= hole.end", __func__)); + KASSERT(SEQ_LT(hole->start, tp->snd_fack), ("%s: hole.start >= snd.fack", __func__)); + KASSERT(SEQ_LT(hole->end, tp->snd_fack), ("%s: hole.end >= snd.fack", __func__)); + KASSERT(SEQ_LT(hole->rxmit, tp->snd_fack), ("%s: hole.rxmit >= snd.fack", __func__)); + if (SEQ_GEQ(hole->start, hole->end) || + SEQ_GEQ(hole->start, tp->snd_fack) || + SEQ_GEQ(hole->end, tp->snd_fack) || + SEQ_GEQ(hole->rxmit, tp->snd_fack)) { + log(LOG_CRIT,"tcp: invalid SACK hole (%u-%u,%u) vs fwd ack %u, ignoring.\n", + hole->start, hole->end, hole->rxmit, tp->snd_fack); + return (NULL); + } return (hole); }