summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/squashfs/sqfs_inode.c6
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: