cvs commit: src/sys/netinet ip_divert.c
Robert Watson
rwatson at freebsd.org
Tue Oct 19 15:55:04 PDT 2004
On Wed, 20 Oct 2004, Andre Oppermann wrote:
> Robert Watson wrote:
> >
> > On Wed, 20 Oct 2004, Andre Oppermann wrote:
> >
> > > Hmm... I'll take a look at those attempts and see what I can come up
> > > with to get some general solution for the protocol cases. The approach
> > > of callout_drain() looks promising though.
> >
> > BTW, it looks like the divert pcb zone uses UMA_ZONE_NOFREE so that the
> > memory is type-stable (presumably in particular for the sysctl), so all
> > memory allocated by the divert module for pcbs is likely leaked on unload.
> > I'm beginning to think we should just block unload for divert and solve
> > the unload problem another day for another protocol...
>
> It is indeed an oversight by me not to uma_zdestroy() the zone on
> unload. The sysctl handler uses normal malloc.
If it's like other instances of type-stable storage, it's so that weak
consistency can be used by the monitoring sysctl in order to avoid
allocating lots of memory and/or suspending operation while monitoring
takes place. Other instances of type-stable storage in the socket code
and network stack rely on the "chain'o'pcbs" list pointers not being
cleared on allocation and free.
Robert N M Watson FreeBSD Core Team, TrustedBSD Projects
robert at fledge.watson.org Principal Research Scientist, McAfee Research
More information about the cvs-src
mailing list