diff options
Diffstat (limited to 'fs/udf/symlink.c')
| -rw-r--r-- | fs/udf/symlink.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/udf/symlink.c b/fs/udf/symlink.c index e6f933dd6a7b..6ec99221e50c 100644 --- a/fs/udf/symlink.c +++ b/fs/udf/symlink.c | |||
| @@ -33,7 +33,8 @@ | |||
| 33 | #include <linux/buffer_head.h> | 33 | #include <linux/buffer_head.h> |
| 34 | #include "udf_i.h" | 34 | #include "udf_i.h" |
| 35 | 35 | ||
| 36 | static void udf_pc_to_char(struct super_block *sb, char *from, int fromlen, char *to) | 36 | static void udf_pc_to_char(struct super_block *sb, char *from, int fromlen, |
| 37 | char *to) | ||
| 37 | { | 38 | { |
| 38 | struct pathComponent *pc; | 39 | struct pathComponent *pc; |
| 39 | int elen = 0; | 40 | int elen = 0; |
| @@ -78,10 +79,12 @@ static int udf_symlink_filler(struct file *file, struct page *page) | |||
| 78 | char *symlink; | 79 | char *symlink; |
| 79 | int err = -EIO; | 80 | int err = -EIO; |
| 80 | char *p = kmap(page); | 81 | char *p = kmap(page); |
| 82 | struct udf_inode_info *iinfo; | ||
| 81 | 83 | ||
| 82 | lock_kernel(); | 84 | lock_kernel(); |
| 83 | if (UDF_I_ALLOCTYPE(inode) == ICBTAG_FLAG_AD_IN_ICB) { | 85 | iinfo = UDF_I(inode); |
| 84 | symlink = UDF_I_DATA(inode) + UDF_I_LENEATTR(inode); | 86 | if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { |
| 87 | symlink = iinfo->i_ext.i_data + iinfo->i_lenEAttr; | ||
| 85 | } else { | 88 | } else { |
| 86 | bh = sb_bread(inode->i_sb, udf_block_map(inode, 0)); | 89 | bh = sb_bread(inode->i_sb, udf_block_map(inode, 0)); |
| 87 | 90 | ||
