Subject: Re: uvm_km_free() does not unloan implicitly?
To: Jaromr Dolecek <jdolecek@netbsd.org>
From: Chuck Cranor <chuck@research.att.com>
List: tech-kern
Date: 10/10/2001 21:06:46
On Tue, Sep 18, 2001 at 11:36:04PM +0200, Jaromr Dolecek wrote:
> and ^C it, kernel with NEW_PIPE leaks the amount of memory used
> for memory loan for the write(2) call to pipe (this is 1MB, or
> PIPE_DIRECT_CHUNK of memory). The 1MB of memory also stays wired
> (the wiring is done implicitly for LOAN_TOPAGE in uvm_loan()). I've
> tested this with both TOPAGE and TOANON loans, and it happens for
> both, though no wiring happens for TOANON case, of course.
>
> If I add appropriate uvm_unloanFOO() call before uvm_km_free() of
> the kva used for loaned memory in pipe_loan_free(), no memory leak
> occurs.
>
> Up to now, I though that uvm_km_free() of kva using the loaned
> memory pages would implicitly 'unloan' up the loaned pages. Either this
> is not done, or I still miss something.
>
> Is this supposed to work this way, or is this a bug?
hmmm, i dug through my notes and memory and what i recall is:
to page: the idea is that you are gaining a loan reference here
for some special kernel use of the memory and thus you
should unloan it to get rid of the pages.
it does currently wire the pages (following the logic
that all kernel allocated memory is wired), but in an
email from chuck silvers (which you have been cc'd on)
we believe that this may not be necessary given the
protection already in place. chuck proposed an
optimization where we bypass the wire on the pages (assuming
the non-zero loan count on the page is good enough).
to anon: the idea is that you are encapsulating some memory pages
in an anon for insertion into an amap in a process. the
pages can either come from other anons or can be pages from
a uvm_object.
in this case the control of the memory is turned over to
the anon/amap subsystem and you shouldn't need to unloan
it (_provided_ you insert it in a map somewhere so that it
can be unmapped later). if you loan it to an anon and
then decide you don't want it, then the idea was that you'd
unloan it to get rid of it.
does this match the behavior you are seeing now? [i realize your
msg is somewhat old now so things may have changed ... i have been
off-line from all mailing lists since the attack on WTC took out the
network connection for news.netbsd.org. thanks to kimmo suominen,
et al. for getting news.netbsd.org back on the air...]
chuck