Re: [Confirmed, cause found] Re: BUG in rmdir changes

Alessandro Suardi (asuardi@uninetcom.it)
Thu, 10 Dec 1998 22:18:08 +0100


Alexander Viro wrote:
>
> WHAT? All changes in rmdir are far off from the path demonstarted here.
> do_rmdir() has been changed, but all changes are below the test for
> negative dentry. It shouldn't even get to the code in quest... Wait.
> static inline int do_rmdir(const char * name)
> {
> int error;
> struct dentry *dir;
> struct dentry *dentry;
>
> dentry = lookup_dentry(name, NULL, 0);
> error = PTR_ERR(dentry);
> if (IS_ERR(dentry))
> goto exit;
>
> dir = dget(dentry->d_parent);
>
> error = -ENOENT;
> if (!dentry->d_inode)
> goto exit;
>
> Arrgh!!! OK, I've got it. Sheesh... dget() should happen immediately
> after the check for negative dentry.
>
> Looks like we've caught it - fix being to move the line with dget()
> immediately below the check. I'll roll the patch as soon as I'll get to
> the Linux box where I have an official tree.

Edited fs/namei.c, compiled, rebooted, I can now umount /home :)
Excellent work Alexander !

--alessandro <asuardi@uninetcom.it> <asuardi@it.oracle.com>

Linux 2.0.36/2.1.131 glibc-2.0.7-29 gcc-2.8.1 binutils-2.9.1.0.15

"I hate bugs which disappear just as soon as you start trying to
narrow things down." -- Stephen Tweedie

-
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/