]> err.no Git - linux-2.6/commitdiff
[PATCH] namei fixes (5/19)
authorAl Viro <viro@www.linux.org.uk>
Mon, 6 Jun 2005 20:36:01 +0000 (13:36 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 6 Jun 2005 21:42:24 +0000 (14:42 -0700)
fix for too early mntput() in open_namei() - we pin path.mnt down for the
duration of __do_follow_link().  Otherwise we could get the fs where our
symlink lived unmounted while we were in __do_follow_link().  That would end
up with dentry of symlink staying pinned down through the fs shutdown.

Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/namei.c

index e42f7c35545a654398b6272119fdaf7231a975c5..020fb8c8d1cddb85b8b10714658b05774af9015c 100644 (file)
@@ -1524,8 +1524,10 @@ do_link:
        error = security_inode_follow_link(path.dentry, nd);
        if (error)
                goto exit_dput;
+       mntget(path.mnt);
        error = __do_follow_link(path.dentry, nd);
        dput(path.dentry);
+       mntput(path.mnt);
        path.mnt = nd->mnt;
        if (error)
                return error;