CVE-2025-40049

Summary

In the Linux kernel, the following vulnerability has been resolved:

Squashfs: fix uninit-value in squashfs_get_parent

Syzkaller reports a "KMSAN: uninit-value in squashfs_get_parent" bug.

This is caused by open_by_handle_at() being called with a file handle containing an invalid parent inode number. In particular the inode number is that of a symbolic link, rather than a directory.

Squashfs_get_parent() gets called with that symbolic link inode, and accesses the parent member field.

unsigned int parent_ino = squashfs_i(inode)->parent;

Because non-directory inodes in Squashfs do not have a parent value, this is uninitialised, and this causes an uninitialised value access.

The fix is to initialise parent with the invalid inode 0, which will cause an EINVAL error to be returned.

Regular inodes used to share the parent field with the block_list_start field. This is removed in this commit to enable the parent field to contain the invalid inode number 0.

Affected Software

VendorProductVersion RangeStatus
LinuxLinux122601408d20c77704268f1dea9f9ce4abf997c2 < f81a5bc9e924ee1950e0dd82bd10749048390f6eaffected
LinuxLinux122601408d20c77704268f1dea9f9ce4abf997c2 < 382a47fae449e554ef1e8c198667fd2f3270b945affected
LinuxLinux122601408d20c77704268f1dea9f9ce4abf997c2 < 61d38b5ce2782bff3cacaacbb8164087a73ed1a5affected
LinuxLinux122601408d20c77704268f1dea9f9ce4abf997c2 < 81a2bca52d43fc9d9abf07408b91255131c5dc53affected
LinuxLinux122601408d20c77704268f1dea9f9ce4abf997c2 < c28b0ca029edf5d0558abcd76cb8c732706cd339affected
LinuxLinux122601408d20c77704268f1dea9f9ce4abf997c2 < 1b3ccd0019132880c94bb00ca7088c1749308f82affected
LinuxLinux122601408d20c77704268f1dea9f9ce4abf997c2 < 91b99db7a92e57ff48a96a1b10fddfd2547e7f53affected
LinuxLinux122601408d20c77704268f1dea9f9ce4abf997c2 < 74058c0a9fc8b2b4d5f4a0ef7ee2cfa66a9e49cfaffected
LinuxLinux2.6.29affected
LinuxLinux0 < 2.6.29unaffected
LinuxLinux5.4.301 <= 5.4.*unaffected
LinuxLinux5.10.246 <= 5.10.*unaffected
LinuxLinux5.15.195 <= 5.15.*unaffected
LinuxLinux6.1.156 <= 6.1.*unaffected
LinuxLinux6.6.112 <= 6.6.*unaffected
LinuxLinux6.12.53 <= 6.12.*unaffected
LinuxLinux6.17.3 <= 6.17.*unaffected
LinuxLinux6.18 <= *unaffected

Weaknesses

References