diff options
-rw-r--r-- | fs/squashfs/sqfs_inode.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/squashfs/sqfs_inode.c b/fs/squashfs/sqfs_inode.c index bb3ccd37e33..ce9a8ff8e2a 100644 --- a/fs/squashfs/sqfs_inode.c +++ b/fs/squashfs/sqfs_inode.c @@ -19,7 +19,9 @@ int sqfs_inode_size(struct squashfs_base_inode *inode, u32 blk_size) { - switch (get_unaligned_le16(&inode->inode_type)) { + u16 inode_type = get_unaligned_le16(&inode->inode_type); + + switch (inode_type) { case SQFS_DIR_TYPE: return sizeof(struct squashfs_dir_inode); @@ -87,7 +89,7 @@ int sqfs_inode_size(struct squashfs_base_inode *inode, u32 blk_size) get_unaligned_le32(&symlink->symlink_size), &size)) return -EINVAL; - return size; + return (inode_type == SQFS_SYMLINK_TYPE) ? size : size + sizeof(u32); } case SQFS_BLKDEV_TYPE: |