Re: [PATCH RFC 10/17] ext4: use fast incremental CRC update in ext4_free_inode()
"Theodore Tso" <[email protected]> Wed, 3 Jun 2026 10:17:50 -0400
| Newsgroups | dev.linux.lists.sashiko,org.kernel.vger.linux-ext4 |
|---|---|
| Message-ID | <h3n7jlfhyna64dn5o76qxcspnhxdddcs6crpxftmy7gnl7b3sx@jenszfpcsnit> |
On Fri, May 08, 2026 at 11:33:05PM +0000, [email protected] wrote: > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > - [High] ext4_inode_bitmap_csum_set_fast() corrupts the inode bitmap checksum if EXT4_INODES_PER_GROUP(sb) is not a multiple of 8. > > > - ext4_inode_bitmap_csum_set(sb, gdp, bitmap_bh); > > + ext4_inode_bitmap_csum_set_fast(sb, gdp, bit); > > Can this corrupt the inode bitmap checksum if EXT4_INODES_PER_GROUP(sb) is not > a multiple of 8? > > In ext4_inode_bitmap_csum_set(), the CRC32c checksum is computed over exactly > EXT4_INODES_PER_GROUP(sb) >> 3 bytes. If s_inodes_per_group is not a multiple > of 8, any trailing fractional bits are strictly excluded from the checksum > calculation. > > Because ext4_fill_super() does not enforce that s_inodes_per_group is a > multiple of 8, a crafted filesystem can have an unaligned s_inodes_per_group. The reason why ext4_fill_super() doesn't enforce that s_inodes_per_group is a multiple of 8 was that a long time ago, back when Android was allergic to GPLv2 in userspace, they implemented their own version of mke2fs (and didn't run fsck on the file system, sigh). Their MIT licensed version of make_ext4fs would occasionally make file systems that were not a multiple of 8, and this ran afoul of e2fsck[1] if someone actually tried to repair a corrupted Android user data file system (as opposed to just wiping the flash and starting from scratch). [1] https://sourceforge.net/p/e2fsprogs/bugs/292/ This was fixed long ago (over a decade ago), and so at this point, I'm pretty sure any such mobile handsets are in the landfill, so we probably should fix this by adding a check in ext4_fill_super() and a corresponding check in e2fsck. - Ted