Messages in this thread | | | Date | Thu, 10 Dec 1998 22:18:08 +0100 | From | Alessandro Suardi <> | Subject | Re: [Confirmed, cause found] Re: BUG in rmdir changes |
| |
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/
| |