Index: sys/netinet/tcp_syncache.c
===================================================================
RCS file: /cvsroot/src/sys/netinet/tcp_syncache.c,v
retrieving revision 1.7
diff -p -u -r1.7 tcp_syncache.c
--- sys/netinet/tcp_syncache.c	29 Jun 2024 12:59:08 -0000	1.7
+++ sys/netinet/tcp_syncache.c	29 Jul 2026 12:02:30 -0000
@@ -350,11 +350,15 @@ syn_cache_insert(struct syn_cache *sc, s
 		 * This should never happen; we should always find an
 		 * entry in our bucket.
 		 */
-		if (sc2 == NULL)
+		if (tcp_syn_bucket_limit > 0 && sc2 == NULL)
 			panic("syn_cache_insert: bucketoverflow: impossible");
 #endif
-		syn_cache_rm(sc2);
-		syn_cache_put(sc2);	/* calls pool_put but see spl above */
+		if (sc2 != NULL) {
+			syn_cache_rm(sc2);
+
+			/* calls pool_put but see spl above */
+			syn_cache_put(sc2);
+		}
 	} else if (syn_cache_count >= tcp_syn_cache_limit) {
 		struct syn_cache_head *scp2, *sce;
 
@@ -381,14 +385,18 @@ syn_cache_insert(struct syn_cache *sc, s
 			 * This should never happen; we should always find a
 			 * non-empty bucket.
 			 */
-			if (scp2 == scp)
+			if (tcp_syn_cache_limit > 0 && scp2 == scp)
 				panic("syn_cache_insert: cacheoverflow: "
 				    "impossible");
 #endif
 		}
 		sc2 = TAILQ_FIRST(&scp2->sch_bucket);
-		syn_cache_rm(sc2);
-		syn_cache_put(sc2);	/* calls pool_put but see spl above */
+		if (sc2 != NULL) {
+			syn_cache_rm(sc2);
+
+			/* calls pool_put but see spl above */
+			syn_cache_put(sc2);
+		}
 	}
 
 	/*
@@ -910,6 +918,9 @@ syn_cache_add(struct sockaddr *src, stru
 	} else
 		tb.t_flags = 0;
 
+	tb.ts_recent = 0;
+	tb.requested_s_scale = 0;
+
 	switch (src->sa_family) {
 	case AF_INET:
 		/* Remember the IP options, if any. */
