diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2015-08-04 23:23:50 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-08-04 23:23:50 -0400 |
commit | aa65fa35ba6b589a12a6025739c2d935dd743b5a (patch) | |
tree | 08badbdb13e71dfd4a60d1bb4545f115ec2277b7 | |
parent | 97242f99a013950af63effa0732f8ef7db4e31ec (diff) |
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) | |||
879 | return 0; | 879 | return 0; |
880 | 880 | ||
881 | /* Allowed if parent directory not sticky and world-writable. */ | 881 | /* Allowed if parent directory not sticky and world-writable. */ |
882 | parent = nd->path.dentry->d_inode; | 882 | parent = nd->inode; |
883 | if ((parent->i_mode & (S_ISVTX|S_IWOTH)) != (S_ISVTX|S_IWOTH)) | 883 | if ((parent->i_mode & (S_ISVTX|S_IWOTH)) != (S_ISVTX|S_IWOTH)) |
884 | return 0; | 884 | return 0; |
885 | 885 | ||