mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-24 11:29:10 +00:00
Destroy TCP UMA zones (empty or not) upon network stack teardown
to not leak them, otherwise making UMA/vmstat unhappy with every stoped vnet. We will still leak pages (especially for zones marked NOFREE). Reshuffle cleanup order in tcp_destroy() to get rid of what we can easily free first. Sponsored by: ISPsystem Reviewed by: rwatson MFC after: 5 days
This commit is contained in:
parent
e253cdd07c
commit
376aadf896
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=204838
@ -132,6 +132,15 @@ tcp_reass_init(void)
|
||||
tcp_reass_zone_change, NULL, EVENTHANDLER_PRI_ANY);
|
||||
}
|
||||
|
||||
#ifdef VIMAGE
|
||||
void
|
||||
tcp_reass_destroy(void)
|
||||
{
|
||||
|
||||
uma_zdestroy(V_tcp_reass_zone);
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
tcp_reass(struct tcpcb *tp, struct tcphdr *th, int *tlenp, struct mbuf *m)
|
||||
{
|
||||
|
@ -459,15 +459,21 @@ void
|
||||
tcp_destroy(void)
|
||||
{
|
||||
|
||||
tcp_tw_destroy();
|
||||
tcp_reass_destroy();
|
||||
tcp_hc_destroy();
|
||||
syncache_destroy();
|
||||
tcp_tw_destroy();
|
||||
|
||||
/* XXX check that hashes are empty! */
|
||||
hashdestroy(V_tcbinfo.ipi_hashbase, M_PCB,
|
||||
V_tcbinfo.ipi_hashmask);
|
||||
hashdestroy(V_tcbinfo.ipi_porthashbase, M_PCB,
|
||||
V_tcbinfo.ipi_porthashmask);
|
||||
|
||||
uma_zdestroy(V_sack_hole_zone);
|
||||
uma_zdestroy(V_tcpcb_zone);
|
||||
uma_zdestroy(V_tcbinfo.ipi_zone);
|
||||
|
||||
INP_INFO_LOCK_DESTROY(&V_tcbinfo);
|
||||
}
|
||||
#endif
|
||||
|
@ -185,6 +185,8 @@ tcp_tw_destroy(void)
|
||||
while((tw = TAILQ_FIRST(&V_twq_2msl)) != NULL)
|
||||
tcp_twclose(tw, 0);
|
||||
INP_INFO_WUNLOCK(&V_tcbinfo);
|
||||
|
||||
uma_zdestroy(V_tcptw_zone);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -657,6 +657,9 @@ char *tcp_log_addrs(struct in_conninfo *, struct tcphdr *, void *,
|
||||
const void *);
|
||||
int tcp_reass(struct tcpcb *, struct tcphdr *, int *, struct mbuf *);
|
||||
void tcp_reass_init(void);
|
||||
#ifdef VIMAGE
|
||||
void tcp_reass_destroy(void);
|
||||
#endif
|
||||
void tcp_input(struct mbuf *, int);
|
||||
u_long tcp_maxmtu(struct in_conninfo *, int *);
|
||||
u_long tcp_maxmtu6(struct in_conninfo *, int *);
|
||||
|
Loading…
Reference in New Issue
Block a user