[FIX] Re: nasty inode leak in 2.1.125? details

Alexander Viro (viro@math.psu.edu)
Thu, 5 Nov 1998 05:43:24 -0500 (EST)


On Fri, 30 Oct 1998, Stephen C. Tweedie wrote:

> Hi,
>
> On Thu, 29 Oct 1998 19:26:00 -0500 (EST), Alexander Viro
> <viro@math.psu.edu> said:
>
> > Stephen, I also did hit it. In 2.1.126. Couldn't reproduce it yet. I've
> > poked in /dev/kmem and it turned out that ->s_root->d_count was 2 without
> > any obvious holders. So it sounds like dentry leak. And no, I don't know
> > how I got there. _Not_ the way that Chris described, that's for sure.
>
> OK, I'll file this for now and keep my eyes open for other reports:
> can _anybody_ reliably reproduce this?

Me. Recipe: rename(foo,bar) for non-existant foo. You'll get ENOENT,
sure, but in addition you'll have a lost reference to dentry of foo. Looks
like the bug happened in 2.1.123.

Linus, could you apply the following fix?

--- linux/fs/namei.c.orig Sat Oct 24 22:36:27 1998
+++ linux/fs/namei.c Thu Nov 5 02:41:01 1998
@@ -1195,7 +1195,7 @@

error = -ENOENT;
if (!old_dentry->d_inode)
- goto exit;
+ goto exit_old;

{
unsigned int flags = 0;

HTH. HAND.
Al

-- 
There are no "civil aviation for dummies" books out there and most of
you would probably be scared and spend a lot of your time looking up
if there was one. :-)			  Jordan Hubbard in c.u.b.f.m

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/