git: ac83f3fa44f3 - stable/14 - tcp: properly unroll SACK transmission on TX error with LRD

From: Richard Scheffenegger <rscheff_at_FreeBSD.org>
Date: Mon, 25 Dec 2023 08:56:37 UTC
The branch stable/14 has been updated by rscheff:

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

commit ac83f3fa44f3c64ddb4f817aa4c2032546a1ac92
Author:     Richard Scheffenegger <rscheff@FreeBSD.org>
AuthorDate: 2023-12-18 12:01:28 +0000
Commit:     Richard Scheffenegger <rscheff@FreeBSD.org>
CommitDate: 2023-12-24 13:32:29 +0000

    tcp: properly unroll SACK transmission on TX error with LRD
    
    PR:                    275798
    Reported by:           ddaniel@nvidia.com
    Reviewed by:           tuexen, #transport
    MFC after:             1 week
    Sponsored by:          NetApp, Inc.
    Differential Revision: https://reviews.freebsd.org/D43085
    
    (cherry picked from commit e3b9058e5cd0f541da596624a366e14cabcf2e2a)
---
 sys/netinet/tcp_output.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index d83d4b8d65b1..8efea91e116f 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -1654,7 +1654,7 @@ timer:
 		    ((flags & TH_SYN) == 0) &&
 		    (error != EPERM)) {
 			if (sack_rxmit) {
-				p->rxmit -= len;
+				p->rxmit = SEQ_MIN(p->end, p->rxmit) - len;
 				tp->sackhint.sack_bytes_rexmit -= len;
 				KASSERT(tp->sackhint.sack_bytes_rexmit >= 0,
 				    ("sackhint bytes rtx >= 0"));