squashfs: Fix sqfs_inode_size() for xattr related SQFS_LSYMLINK_TYPE
authorNorbert van Bolhuis <nvbolhuis@gmail.com>
Tue, 24 Dec 2024 00:49:04 +0000 (01:49 +0100)
committerTom Rini <trini@konsulko.com>
Sat, 18 Jan 2025 14:29:10 +0000 (08:29 -0600)
commitbbfa4fe13ca7645bd3033513dda48920e7c25542
tree5397c3d096925ddc8eda4ac1d47e9fefb6f8232a
parenta0defa4f358145d34e69bcd059b407ea853580cb
squashfs: Fix sqfs_inode_size() for xattr related SQFS_LSYMLINK_TYPE

A squashfs filesystem with extended attributes (xattrs) may have
inodes of type SQFS_LSYMLINK_TYPE. This might cause u-boot to fail to
handle the filesystem since it assumes a SYMLINK_TYPE and LSYMLINK_TYPE
inode are the same size. This is wrong, see:
https://github.com/plougher/squashfs-tools/blob/master/squashfs-tools/read_fs.c#L421

Using the mksquashfs '-no-xattrs' argument is probably best, but the
mksquashfs '-xattrs' argument is the default.
This patch fixes squashfs image handling by making sure parsing the
uncompressed inode_table (with sqfs_find_inode) succeeeds. The only change
needed is correctly determining the size of a SQFS_LSYMLINK_TYPE inode.

Signed-off-by: Norbert van Bolhuis <nvbolhuis@gmail.com>
fs/squashfs/sqfs_inode.c