diff options
Diffstat (limited to 'fs/stat.c')
-rw-r--r-- | fs/stat.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/stat.c b/fs/stat.c index bc045c7994e1..0b210c3ead5c 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -329,12 +329,14 @@ retry: struct inode *inode = d_backing_inode(path.dentry); error = empty ? -ENOENT : -EINVAL; - if (inode->i_op->readlink) { + /* + * AFS mountpoints allow readlink(2) but are not symlinks + */ + if (d_is_symlink(path.dentry) || inode->i_op->readlink) { error = security_inode_readlink(path.dentry); if (!error) { touch_atime(&path); - error = inode->i_op->readlink(path.dentry, - buf, bufsiz); + error = vfs_readlink(path.dentry, buf, bufsiz); } } path_put(&path); |