Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Oct 2024 19:13:34 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 519981e3c09c - main - tcp_output: Clear FIN if tcp_m_copym truncates output length
Message-ID:  <202410021913.492JDY5j092511@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=519981e3c09c2875b136635459c87ab24d3104e2

commit 519981e3c09c2875b136635459c87ab24d3104e2
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2024-10-02 19:12:37 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2024-10-02 19:12:37 +0000

    tcp_output: Clear FIN if tcp_m_copym truncates output length
    
    Reviewed by:    rscheff, tuexen, gallatin
    Sponsored by:   Chelsio Communications
    Differential Revision:  https://reviews.freebsd.org/D46824
---
 sys/netinet/tcp_output.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index fe1f15c26338..78ecfe5289b6 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -1078,13 +1078,18 @@ send:
 				sbsndptr_adv(&so->so_snd, mb, len);
 			m->m_len += len;
 		} else {
+			int32_t old_len;
+
 			if (SEQ_LT(tp->snd_nxt, tp->snd_max))
 				msb = NULL;
 			else
 				msb = &so->so_snd;
+			old_len = len;
 			m->m_next = tcp_m_copym(mb, moff,
 			    &len, if_hw_tsomaxsegcount,
 			    if_hw_tsomaxsegsize, msb, hw_tls);
+			if (old_len != len)
+				flags &= ~TH_FIN;
 			if (len <= (tp->t_maxseg - optlen)) {
 				/*
 				 * Must have ran out of mbufs for the copy



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202410021913.492JDY5j092511>