Subject: Re: Memory leak in nfsrv_readdir
To: None <tech-kern@netbsd.org>
From: Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>
List: tech-kern
Date: 07/20/2006 10:32:06
On Thu, Jul 20, 2006 at 04:16:38PM +1200, Mark Davies wrote:
> A couple of weeks ago I posted to current-users about one of my servers that 
> kept locking up every few days. 
> (http://mail-index.netbsd.org/current-users/2006/07/06/0007.html)
> After some very useful assistance by Juergen Hannken-Illjes we've tracked down 
> that the actual problem is a memory leak in nfsrv_readdir().  It looks like 
> this leak has been there since Lite2 was merged in 8 years ago.
> 
> Whats happening is that nfsrv_readdir() calls VOP_READDIR which malloc's some 
> space to hold the directory seek cookies.  Normally the cookies are freed at 
> the end of the routine but somtimes the code jumps back to the "again" label 
> calling VOP_READDIR again so mallocing new cookies without ever freeing the 
> old ones.
> 
> The below patch fixes the problem in the same way as FreeBSD does.  OK to 
> commit?
> 
> I still don't know what it is about that particular server of mine that is 
> tickling the bug much more frequently than other boxes.
[snip]

This leak is triggered by directories with many unused entries in a row so
VOP_READDIR returns no valid entry.

-- 
Juergen Hannken-Illjes - hannken@eis.cs.tu-bs.de - TU Braunschweig (Germany)