postpone __putname() until after do_last()
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 24 Dec 2009 07:08:19 +0000 (02:08 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 5 Mar 2010 14:01:18 +0000 (09:01 -0500)
Since do_last() doesn't mangle nd->last_name, we can safely postpone
__putname() done in handling of trailing symlinks until after the
call of do_last()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namei.c

index fc6bed7215c98620ec87b8cd6c6e6417b68b1d39..30ba3f3a25e2f7183577e833a21fe73c647d0b45 100644 (file)
@@ -1923,9 +1923,9 @@ do_link:
        mutex_lock(&dir->d_inode->i_mutex);
        path.dentry = lookup_hash(&nd);
        path.mnt = nd.path.mnt;
-       __putname(nd.last.name);
        filp = do_last(&nd, &path, open_flag, flag, acc_mode, mode,
                       pathname, dir, &is_link);
+       __putname(nd.last.name);
        if (is_link)
                goto do_link;
        if (nd.root.mnt)