From nobody Wed Apr 19 17:16:53 2023 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 4Q1nX56fXwz46DBG; Wed, 19 Apr 2023 17:16:53 +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 4Q1nX5619Pz4Jly; Wed, 19 Apr 2023 17:16:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1681924613; 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=YGxG03RlXWiwPo0BOpwo+9UCpNS2dWHfeMbEHH1w0Hk=; b=WNm+v9Y4WrTLo9dEOEgvsyNDRZFYgbiCgYMfOpTCNv+9ypLRaGRaxt31lu/TNG/QkW3fsb 2HIuL6cx9QWGrLK0dmZAmsOWOEG4Vim+g4OZabF/RFekG0xp/dvpRzj5t5vAsYisaUyLDv +B4woFyOkkGGEWVJh1t9RcdMH8dFCLHIxgyKfkCQGbdAa7Rt2phIZoWz9T60EmuYinJUpW hu5gN3dQCwujUFViSheAK0CLy+ujVTymh74+L9aLoyY1PqS4Vrg7i1mNQMkRl02AE4j7qB +YcALUivJMhh6OsdwpW8iSwjClJv8s0CKz2TeVqh4aaJmMplDM6Moa7WvjsJmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1681924613; 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=YGxG03RlXWiwPo0BOpwo+9UCpNS2dWHfeMbEHH1w0Hk=; b=oyijCIWwzOr9ym/EDCKpsjDd67wlUegIFG6PcNa1fGfIa79bI1wcoIZ108qRFP3OcH4LM4 OcERw/yn5jEdfgcFz+A8t7WMC+xQdvra0+T0gsYY0XxCDt0GVSPdfqxonUSRDZMyL0KDCK Th+I3aTs9FbSEzb3g9PuyenXdn4RBJR7SZns2y6TmX6v/wBN50BzpzONiABn84PJc4ixzX tZdO29oDmZUVL7M0kChQGZnwuZnrKkTAa4rgkw/8IBsa3OTKaKO/gDShCMcDGLkY5sLwUc rZgjm9+0Hszp6sneQs2Hp2i9aRb6x4JAYjAcGJ1CrqraugKoxtL6hM7/p3lGEw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1681924613; a=rsa-sha256; cv=none; b=vnFLEmJV7udyr17bCicmZabT9bxp06NwM+zclZCBONmP3lm/IXxWOUPhxtVOtrxBYSLJdv NQZ3xlyUcjT0K4Y+zg+WNMKRcAqSKNOj0MKUHF6lWf/2Lc79OiBwg2BnayE8bV6AP+v/+k sfTHOXqAPheEDsIEg1EQjaAHIp+di8sy90K74BhGlqNUfbqAj51rUWZp1ryOsoRq0DoPPD Ei8m8bCSBE91u6Eiu7mtwCj0QSYfEr/Xfe1nKtTTggfn7+sULOSIK3ENnNiVX0uiRqp8lH UwXYCZsyz9oNXCc3YV+JXEWlxBv3KveH7ENV5VoIOaXGX44o0h4XySmOvEyhRQ== 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 4Q1nX54yXhz12y6; Wed, 19 Apr 2023 17:16:53 +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 33JHGr41073263; Wed, 19 Apr 2023 17:16:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 33JHGrsx073262; Wed, 19 Apr 2023 17:16:53 GMT (envelope-from git) Date: Wed, 19 Apr 2023 17:16:53 GMT Message-Id: <202304191716.33JHGrsx073262@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Randall Stewart Subject: git: 7a842346c3cd - main - tcp: Rack can crash with the new non-TSO fix.. 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: rrs X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7a842346c3cd04dc07235c6af5ce0bec0db90be2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rrs: URL: https://cgit.FreeBSD.org/src/commit/?id=7a842346c3cd04dc07235c6af5ce0bec0db90be2 commit 7a842346c3cd04dc07235c6af5ce0bec0db90be2 Author: Randall Stewart AuthorDate: 2023-04-19 17:17:04 +0000 Commit: Randall Stewart CommitDate: 2023-04-19 17:17:04 +0000 tcp: Rack can crash with the new non-TSO fix.. Turns out the location of the check to see if we can do output is in the wrong place. We need to jump off to the compressed acks before handling that case since th is NULL in the compressed ack case which is handled differently anyway. Reviewed by: tuexen Sponsored by: Netflix Inc Differential Revision:https://reviews.freebsd.org/D39690 --- sys/netinet/tcp_stacks/rack.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 40706d5ebfca..a6d5362fafb4 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -16497,6 +16497,15 @@ rack_do_segment_nounlock(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, * anything becase a pacing timer is running. */ us_cts = tcp_tv_to_usectick(tv); + if (m->m_flags & M_ACKCMP) { + /* + * All compressed ack's are ack's by definition so + * remove any ack required flag and then do the processing. + */ + rack->rc_ack_required = 0; + return (rack_do_compressed_ack_processing(tp, so, m, nxt_pkt, tv)); + } + thflags = tcp_get_flags(th); if ((rack->rc_always_pace == 1) && (rack->rc_ack_can_sendout_data == 0) && (rack->r_ctl.rc_hpts_flags & PACE_PKT_OUTPUT) && @@ -16539,15 +16548,6 @@ rack_do_segment_nounlock(struct tcpcb *tp, struct mbuf *m, struct tcphdr *th, no_output = 0; } } - if (m->m_flags & M_ACKCMP) { - /* - * All compressed ack's are ack's by definition so - * remove any ack required flag and then do the processing. - */ - rack->rc_ack_required = 0; - return (rack_do_compressed_ack_processing(tp, so, m, nxt_pkt, tv)); - } - thflags = tcp_get_flags(th); /* * If there is a RST or FIN lets dump out the bw * with a FIN the connection may go on but we