Description
In the Linux kernel, the following vulnerability has been resolved: ocfs2: validate inline data i_size during inode read When reading an inode from disk, ocfs2_validate_inode_block() performs various sanity checks but does not validate the size of inline data. If the filesystem is corrupted, an inode's i_size can exceed the actual inline data capacity (id_count). This causes ocfs2_dir_foreach_blk_id() to iterate beyond the inline data buffer, triggering a use-after-free when accessing directory entries from freed memory. In the syzbot report: - i_size was 1099511627576 bytes (~1TB) - Actual inline data capacity (id_count) is typically <256 bytes - A garbage rec_len (54648) caused ctx->pos to jump out of bounds - This triggered a UAF in ocfs2_check_dir_entry() Fix by adding a validation check in ocfs2_validate_inode_block() to ensure inodes with inline data have i_size <= id_count. This catches the corruption early during inode read and prevents all downstream code from operating on invalid data.
Product status
23193e513d1cd69411469f028d56fd175d4a6b07 (git) before 37f074e65f24f10f8d8df224a572e4cb9e6faf63
23193e513d1cd69411469f028d56fd175d4a6b07 (git) before c1de19e891be3bfb3e1d0c7cf07bbb8fb3b77c1b
23193e513d1cd69411469f028d56fd175d4a6b07 (git) before cd2d765aa7157f852999842af32148128c735d39
23193e513d1cd69411469f028d56fd175d4a6b07 (git) before 77d0295725109d77f5854ef5b58c0d06c08168cc
23193e513d1cd69411469f028d56fd175d4a6b07 (git) before 1524af3685b35feac76662cc551cbc37bd14775f
2.6.24
Any version before 2.6.24
6.6.136 (semver)
6.12.83 (semver)
6.18.24 (semver)
6.19.14 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/37f074e65f24f10f8d8df224a572e4cb9e6faf63
git.kernel.org/...c/c1de19e891be3bfb3e1d0c7cf07bbb8fb3b77c1b
git.kernel.org/...c/cd2d765aa7157f852999842af32148128c735d39
git.kernel.org/...c/77d0295725109d77f5854ef5b58c0d06c08168cc
git.kernel.org/...c/1524af3685b35feac76662cc551cbc37bd14775f