From ad4d05329df5e9825cac3132e12453a6c12915b8 Mon Sep 17 00:00:00 2001 From: Jan Kara Date: Mon, 2 Jan 2017 14:30:31 +0100 Subject: 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 --- fs/udf/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'fs/udf/inode.c') diff --git a/fs/udf/inode.c b/fs/udf/inode.c index 3a5ac2221a88..5f643c93f564 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c @@ -1547,7 +1547,7 @@ reread: break; case ICBTAG_FILE_TYPE_SYMLINK: 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); inode->i_mode = S_IFLNK | S_IRWXUGO; break; -- cgit v1.2.3-70-g09d2