git: 2eacb0841c7d - main - tcp: small cleanup
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 01 Oct 2024 15:34:43 UTC
The branch main has been updated by tuexen:
URL: https://cgit.FreeBSD.org/src/commit/?id=2eacb0841c7dfc92030abc433e53cd31383a0648
commit 2eacb0841c7dfc92030abc433e53cd31383a0648
Author: Michael Tuexen <tuexen@FreeBSD.org>
AuthorDate: 2024-10-01 15:32:18 +0000
Commit: Michael Tuexen <tuexen@FreeBSD.org>
CommitDate: 2024-10-01 15:34:35 +0000
tcp: small cleanup
No functional change intended.
Reviewed by: cc, glebius, markj, rscheff
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D46850
---
sys/netinet/tcp_syncache.c | 59 ++++++++++++++++++++++------------------------
1 file changed, 28 insertions(+), 31 deletions(-)
diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c
index cb175d07c4d2..d0068a9d313b 100644
--- a/sys/netinet/tcp_syncache.c
+++ b/sys/netinet/tcp_syncache.c
@@ -1567,49 +1567,46 @@ syncache_add(struct in_conninfo *inc, struct tcpopt *to, struct tcphdr *th,
goto donenoprobe;
}
- if (tfo_cookie_valid) {
- bzero(&scs, sizeof(scs));
- sc = &scs;
- goto skip_alloc;
- }
-
+ KASSERT(sc == NULL, ("sc(%p) != NULL", sc));
/*
* Skip allocating a syncache entry if we are just going to discard
* it later.
*/
- if (!locked) {
+ if (!locked || tfo_cookie_valid) {
bzero(&scs, sizeof(scs));
sc = &scs;
- } else
- sc = uma_zalloc(V_tcp_syncache.zone, M_NOWAIT | M_ZERO);
- if (sc == NULL) {
- /*
- * The zone allocator couldn't provide more entries.
- * Treat this as if the cache was full; drop the oldest
- * entry and insert the new one.
- */
- TCPSTAT_INC(tcps_sc_zonefail);
- if ((sc = TAILQ_LAST(&sch->sch_bucket, sch_head)) != NULL) {
- sch->sch_last_overflow = time_uptime;
- syncache_drop(sc, sch);
- syncache_pause(inc);
- }
+ } else {
sc = uma_zalloc(V_tcp_syncache.zone, M_NOWAIT | M_ZERO);
if (sc == NULL) {
- if (V_tcp_syncookies) {
- bzero(&scs, sizeof(scs));
- sc = &scs;
- } else {
- KASSERT(locked,
- ("%s: bucket unexpectedly unlocked",
- __func__));
- SCH_UNLOCK(sch);
- goto done;
+ /*
+ * The zone allocator couldn't provide more entries.
+ * Treat this as if the cache was full; drop the oldest
+ * entry and insert the new one.
+ */
+ TCPSTAT_INC(tcps_sc_zonefail);
+ sc = TAILQ_LAST(&sch->sch_bucket, sch_head);
+ if (sc != NULL) {
+ sch->sch_last_overflow = time_uptime;
+ syncache_drop(sc, sch);
+ syncache_pause(inc);
+ }
+ sc = uma_zalloc(V_tcp_syncache.zone, M_NOWAIT | M_ZERO);
+ if (sc == NULL) {
+ if (V_tcp_syncookies) {
+ bzero(&scs, sizeof(scs));
+ sc = &scs;
+ } else {
+ KASSERT(locked,
+ ("%s: bucket unexpectedly unlocked",
+ __func__));
+ SCH_UNLOCK(sch);
+ goto done;
+ }
}
}
}
-skip_alloc:
+ KASSERT(sc != NULL, ("sc == NULL"));
if (!tfo_cookie_valid && tfo_response_cookie_valid)
sc->sc_tfo_cookie = &tfo_response_cookie;