summaryrefslogtreecommitdiffstats
path: root/fs/udf/namei.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2017-01-02 14:30:31 +0100
committerJan Kara <jack@suse.cz>2017-01-05 07:52:57 +0100
commitad4d05329df5e9825cac3132e12453a6c12915b8 (patch)
tree56e6acd3b189c2fa6654ee13d1418616de19c7e8 /fs/udf/namei.c
parenta17f0cb5b9eaf8212b396d2381cf7594cd5315c7 (diff)
downloadlinux-ad4d05329df5e9825cac3132e12453a6c12915b8.tar.gz
linux-ad4d05329df5e9825cac3132e12453a6c12915b8.tar.bz2
linux-ad4d05329df5e9825cac3132e12453a6c12915b8.zip
udf: Make stat on symlink report symlink length as st_size
UDF encodes symlinks in a more complex fashion and thus i_size of a symlink does not match the lenght of a string returned by readlink(2). This confuses some applications (see bug 191241) and may be considered a violation of POSIX. Fix the problem by reading the link into page cache in response to stat(2) call and report the length of the decoded path. Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/udf/namei.c')
-rw-r--r--fs/udf/namei.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/udf/namei.c b/fs/udf/namei.c
index 2d65e280748b..babf48d0e553 100644
--- a/fs/udf/namei.c
+++ b/fs/udf/namei.c
@@ -931,7 +931,7 @@ static int udf_symlink(struct inode *dir, struct dentry *dentry,
}
inode->i_data.a_ops = &udf_symlink_aops;
- inode->i_op = &page_symlink_inode_operations;
+ inode->i_op = &udf_symlink_inode_operations;
inode_nohighmem(inode);
if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) {