diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2015-08-05 05:23:50 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-08-05 05:23:50 +0200 |
commit | aa65fa35ba6b589a12a6025739c2d935dd743b5a (patch) | |
tree | 08badbdb13e71dfd4a60d1bb4545f115ec2277b7 | |
parent | link_path_walk(): be careful when failing with ENOTDIR (diff) | |
download | linux-aa65fa35ba6b589a12a6025739c2d935dd743b5a.tar.xz linux-aa65fa35ba6b589a12a6025739c2d935dd743b5a.zip |
may_follow_link() should use nd->inode
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>
-rw-r--r-- | fs/namei.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/namei.c b/fs/namei.c index fbbcf0993312..1c2105ed20c5 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -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; |