Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

udf: Convert udf_symlink_filler() to use udf_bread()

Convert udf_symlink_filler() to use udf_bread() instead of mapping and
reading buffer head manually.

Signed-off-by: Jan Kara <jack@suse.cz>

Jan Kara 15a08f51 f33321b2

+4 -7
+4 -7
fs/udf/symlink.c
··· 107 107 struct inode *inode = page->mapping->host; 108 108 struct buffer_head *bh = NULL; 109 109 unsigned char *symlink; 110 - int err; 110 + int err = 0; 111 111 unsigned char *p = page_address(page); 112 112 struct udf_inode_info *iinfo = UDF_I(inode); 113 - uint32_t pos; 114 113 115 114 /* We don't support symlinks longer than one block */ 116 115 if (inode->i_size > inode->i_sb->s_blocksize) { ··· 120 121 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { 121 122 symlink = iinfo->i_data + iinfo->i_lenEAttr; 122 123 } else { 123 - pos = udf_block_map(inode, 0); 124 - bh = sb_bread(inode->i_sb, pos); 125 - 124 + bh = udf_bread(inode, 0, 0, &err); 126 125 if (!bh) { 127 - err = -EIO; 126 + if (!err) 127 + err = -EFSCORRUPTED; 128 128 goto out_err; 129 129 } 130 - 131 130 symlink = bh->b_data; 132 131 } 133 132