OSDN Git Service

Fix kernel panic when boot up
authorzhang sanshan <sanshan.zhang@nxp.com>
Wed, 26 Oct 2016 13:03:37 +0000 (21:03 +0800)
committerzhang sanshan <sanshan.zhang@nxp.com>
Wed, 26 Oct 2016 13:03:40 +0000 (21:03 +0800)
Kernel will panic with below log after factory reset:
EXT4-fs error (device mmcblk1p4): ext4_validate_block_bitmap:380: comm init: bg 17: block 557056: invalid block bitmap
Aborting journal on device mmcblk1p4-8.
Kernel panic - not syncing: EXT4-fs (device mmcblk1p4): panic forced after error
Rebooting in 5 seconds.

The root cause is the data type conversion issue on 32 bit devices.
When a 32-bit data  mutiply a 32-bit data, it will still get a 32-bit data.
The 64-bit offset will be cut to 32 bit.

Signed-off-by: zhang sanshan <sanshan.zhang@nxp.com>
ext4_utils/ext4_utils.c

index bfa57bc..fa5f673 100644 (file)
@@ -179,7 +179,7 @@ static void block_device_write_sb(int fd)
        /* write out the backup superblocks */
        for (i = 1; i < aux_info.groups; i++) {
                if (ext4_bg_has_super_block(i)) {
-                       offset = info.block_size * (aux_info.first_data_block
+                       offset = (unsigned long long)info.block_size * (aux_info.first_data_block
                                + i * info.blocks_per_group);
                        write_sb(fd, offset, aux_info.backup_sb[i]);
                }