Date: Sat, 9 Apr 2016 10:58:08 +0000 (UTC) From: "Bjoern A. Zeeb" <bz@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r297738 - head/sys/netinet Message-ID: <201604091058.u39Aw8wt020687@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: bz Date: Sat Apr 9 10:58:08 2016 New Revision: 297738 URL: https://svnweb.freebsd.org/changeset/base/297738 Log: Mfp: r296259 We attach the "counter" to the tcpcbs. Thus don't free the TCP Fastopen zone before the tcpcbs are gone, as otherwise the zone won't be empty. With that it should be safe to destroy the "tfo" zone without leaking the memory. PR: 164763 Reviewed by: gnn MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D5731 Modified: head/sys/netinet/tcp_fastopen.c head/sys/netinet/tcp_subr.c Modified: head/sys/netinet/tcp_fastopen.c ============================================================================== --- head/sys/netinet/tcp_fastopen.c Sat Apr 9 10:53:21 2016 (r297737) +++ head/sys/netinet/tcp_fastopen.c Sat Apr 9 10:58:08 2016 (r297738) @@ -204,7 +204,7 @@ void tcp_fastopen_init(void) { V_counter_zone = uma_zcreate("tfo", sizeof(unsigned int), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); rm_init(&V_tcp_fastopen_keylock, "tfo_keylock"); callout_init_rm(&V_tcp_fastopen_autokey_ctx.c, &V_tcp_fastopen_keylock, 0); Modified: head/sys/netinet/tcp_subr.c ============================================================================== --- head/sys/netinet/tcp_subr.c Sat Apr 9 10:53:21 2016 (r297737) +++ head/sys/netinet/tcp_subr.c Sat Apr 9 10:58:08 2016 (r297738) @@ -738,9 +738,6 @@ tcp_destroy(void) { int error; -#ifdef TCP_RFC7413 - tcp_fastopen_destroy(); -#endif tcp_hc_destroy(); syncache_destroy(); tcp_tw_destroy(); @@ -748,6 +745,14 @@ tcp_destroy(void) uma_zdestroy(V_sack_hole_zone); uma_zdestroy(V_tcpcb_zone); +#ifdef TCP_RFC7413 + /* + * Cannot free the zone until all tcpcbs are released as we attach + * the allocations to them. + */ + tcp_fastopen_destroy(); +#endif + error = hhook_head_deregister(V_tcp_hhh[HHOOK_TCP_EST_IN]); if (error != 0) { printf("%s: WARNING: unable to deregister helper hook "
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201604091058.u39Aw8wt020687>