[U-Boot] [PATCH v2 1/4] fs/ext4: Fix group descriptor checksum calculation

Tom Rini trini at konsulko.com
Tue Sep 26 15:25:42 UTC 2017


On Mon, Sep 25, 2017 at 10:06:31PM +0300, Tuomas Tynkkynen wrote:
> The current code doesn't compute the group descriptor checksum correctly
> for the filesystems that e2fsprogs 1.43.4 creates (they have
> 'Group descriptor size: 64' as reported by tune2fs). Extend the checksum
> calculation to be done as ext4_group_desc_csum() does in Linux.
> 
> This fixes these errors in dmesg from running fs-test.sh and makes it
> succeed again:
> 
> [1671902.620699] EXT4-fs (loop1): ext4_check_descriptors: Checksum for group 0 failed (35782!=10965)
> [1671902.620706] EXT4-fs (loop1): group descriptors corrupted!
> 
> Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen at iki.fi>
> ---
> v2: New patch
> ---
>  fs/ext4/ext4_common.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c
> index 621c61e5c7..31952f48b9 100644
> --- a/fs/ext4/ext4_common.c
> +++ b/fs/ext4/ext4_common.c
> @@ -432,6 +432,10 @@ uint16_t ext4fs_checksum_update(uint32_t i)
>  		crc = ext2fs_crc16(crc, desc, offset);
>  		offset += sizeof(desc->bg_checksum);	/* skip checksum */
>  		assert(offset == sizeof(*desc));
> +		if (offset < fs->gdsize) {
> +			crc = ext2fs_crc16(crc, (__u8 *)desc + offset,
> +					   fs->gdsize - offset);
> +		}

This would be feb0ab32a57e4e6c8b24f6fb68f0ce08efe4603c from the kernel?
So shouldn't we have le16_to_cpu on fs->gdsize ?  Or did I read over the
'git log -p' output in the kernel too quickly?  Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170926/ac2600d0/attachment.sig>


More information about the U-Boot mailing list