may_follow_link() should use nd->inode
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 5 Aug 2015 03:23:50 +0000 (23:23 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 5 Aug 2015 03:23:50 +0000 (23:23 -0400)
Now that we can get there in RCU mode, we shouldn't play with
nd->path.dentry->d_inode - it's not guaranteed to be stable.
Use nd->inode instead.

Reported-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namei.c

index fbbcf09..1c2105e 100644 (file)
@@ -879,7 +879,7 @@ static inline int may_follow_link(struct nameidata *nd)
                return 0;
 
        /* Allowed if parent directory not sticky and world-writable. */
-       parent = nd->path.dentry->d_inode;
+       parent = nd->inode;
        if ((parent->i_mode & (S_ISVTX|S_IWOTH)) != (S_ISVTX|S_IWOTH))
                return 0;