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. */